分别对两列求和时出错

Error when separately summing two columns

我有两个表,SHPORD 和 CUSTORD,我想获得截至今天尚未完成的所有订单的未完成单位总和。示例在底部。

单独的查询如下所示:

SELECT SHPORD.ITEM, SUM(ISNULL(SHPORD.QTY_OPEN,0)) AS SHPSUM
FROM SHPORD SHPORD
WHERE SHPORD.DATE_DUE <= GETDATE() AND SHPORD.QTY_OPEN > 0
GROUP BY SHPORD.ITEM

SELECT CUSTORD.ITEM, SUM(ISNULL(CUSTORD.QTY_OPEN,0)) AS CUSTSUM
FROM CUSTORD CUSTORD
WHERE CUSTORD.DATE_DUE <= GETDATE() AND CUSTORD.QTY_OPEN > 0
GROUP BY CUSTORD.ITEM

这些 return 想要的结果。

但是如果我尝试像这样组合它们:

SELECT CUSTORD.ITEM, SUM(ISNULL(CUSTORD.QTY_OPEN,0)) AS CUSTSUM, SUM(ISNULL(SHPORD.QTY_OPEN,0)) AS SHPSUM

FROM  CUSTORD CUSTORD

LEFT JOIN SHPORD SHPORD ON CUSTORD.ITEM = SHPORD.ITEM
AND SHPORD.DATE_DUE <= GETDATE() AND SHPORD.QTY_OPEN > 0

WHERE CUSTORD.DATE_DUE <= GETDATE() AND CUSTORD.QTY_OPEN > 0

GROUP BY CUSTORD.ITEM

大约三分之一的项目我得到了错误的结果。

此查询已被解构为尽可能简单,并且仅当同时使用两个 SUM 列时才会出现此问题。我不知所措。可能只是缺少一些简单的东西。

我应该使用什么查询?

示例:

          Table CUSTORD
    CO#    ITEM     QTY OPEN
    111     A          5
    222     B          10
    333     A          15

          Table SHPORD
    SO#    ITEM     QTY OPEN
    444     B          2
    555     B          4
    666     A          7

             OUPUT
    ITEM    CUSTSUM    SHPSUM
    A          20         6
    B          10         7
select t1.ITEM,t1.CUSTSUM,t2.SHPSUM from
(SELECT ITEM, SUM(QTY_OPEN) AS CUSTSUM
FROM CUSTORD GROUP BY CUSTORD.ITEM) t1,
(SELECT ITEM, SUM(QTY_OPEN) AS SHPSUM 
FROM SHPORD GROUP BY SHPORD.ITEM) t2
where t1.ITEM=t2.ITEM

我希望这能奏效,我还没有测试过,只是试试看