【发布时间】:2021-11-28 13:03:05
【问题描述】:
表 1:客户信息数据(大约有 5 万条记录)
表 2:按客户 ID 分类的销售额(有大约 25K 条记录)
当我根据客户 ID 在表 1 上执行表 2 的销售数据左连接时,输出有少量记录 (~500),销售数量增加一个单位。例如客户 #1 的销售量是 200,我在连接输出中得到的销售量是 201。再次注意,这仅适用于少数记录,对于大多数数据,它是绝对正确连接的。
SQL 查询是一个非常标准的查询:
SELECT [Table1$].[ID], Name, Volume, Amount
FROM [Table1$] LEFT JOIN [Table2$] ON [Table1$].[ID] = [Table2$].[ID]
奇怪的是,此错误仅针对少数记录,并且仅针对所有记录更改一个单位。您认为这里的潜在原因是什么?请注意,我从 VBA 运行此 SQL 查询。
编辑:
也许如果我添加一张图片会有所帮助,我已经屏蔽了我的数据:
Table1,蓝色列是joined列,我已经过滤了有问题的ID:
table2,join 列的来源,可以看到是 20,但是和表 1 连接的值是 21。有趣的是,table2 中没有值为 21 的 ID
【问题讨论】:
-
手动运行 SQL 会得到什么?
-
您使用的是哪个 dbms?
-
@norie 我没有尝试手动运行 SQL,但这会破坏我的目的,即使通过 SQL 直接运行它对我有帮助,因为我正在开发一个可以处理所有数据的工具直接从 excel 所需的处理,因为这给了我更大的控制权。
-
手动运行它是调试过程的一部分。如果您得到与从 VBA 运行它时相同的结果,则可能意味着数据或数据库存在问题,如果您不这样做,则问题更可能出在代码上。
-
您是否使用此代码查询 Excel 文件?