SQL Server联接两个表,结果总和不正确

时间:2019-07-16 23:26:37

标签: sql sql-server

联接两个表时,得到的结果不正确。 Runlog.casecount乘以第二个表(Vppallets)上包含相同货盘编号的记录数,但是(故意)在其上有重复的货盘编号,但是我得到的结果不是正确的。现在,我在查询中使用了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

Runlog

RunID   PalletID    casecount
-----------------------------
1872    5000120     104.00
1872    5000123     104.00

我知道重复项来自哪里,我也尝试过进行连接,也重复项得到完全相同的结果,如果删除条件,那么结果会更糟。

1 个答案:

答案 0 :(得分:0)

;WITH CTE AS
(
    SELECT DISTINCT RunID, vpPalletID, vplot
    FROM Vppallets
    WHERE RunID = 1872
)
SELECT CTE.RunID, SUM(RL.casecount) AS Cases, CTE.vplot
FROM CTE INNER JOIN RunLog RL ON CTE.vpPalletID = RL.PalletID
GROUP BY CTE.RunID, CTE.vplot

enter image description here