【发布时间】:2019-07-17 12:24:41
【问题描述】:
我在连接两个表时得到不正确的结果。 Runlog.casecount 乘以第二个表(Vppallets)上包含相同palletid 编号的记录数,但它上面有重复的palletid(故意),但我得到的结果不是正确的。现在我在查询中使用了 where 子句,但我也得到了同样不正确的结果。
预期结果
RunID Cases vpLot
----------------------
1872 104.00 136
1872 104.00 137
当前代码的当前结果:
RunID Cases vpLot
-----------------------
1872 312.00 136
1872 312.00 137
当前查询
SELECT
Vppallets.RunID,
SUM(RunLog.casecount) AS Cases,
Vppallets.vplot
FROM
Vppallets, RunLog
WHERE
Vppallets.vpPalletID = RunLog.PalletID
AND Vppallets.RunID = 1872
GROUP BY
Vppallets.RunID, Vppallets.vplot
下面的示例数据:
Vppallets
vpPalletID PalletNumber RunID casecount vplot
-----------------------------------------------------
5000120 4001810 1872 34.66 136
5000120 3001802 1872 34.66 136
5000120 3001856 1872 34.66 136
5000123 4001808 1872 34.66 137
5000123 3001801 1872 34.66 137
5000123 4001833 1872 34.66 137
运行日志
RunID PalletID casecount
-----------------------------
1872 5000120 104.00
1872 5000123 104.00
我知道重复来自哪里,我也尝试过加入,也重复我得到完全相同的结果,如果我删除条件,那么结果,它甚至更糟糕。
【问题讨论】:
-
Vppallets 是一个视图吗?
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 多年前),不鼓励使用它
标签: sql sql-server