单独汇总两列时出错

时间:2015-11-03 14:09:30

标签: sql excel sum ms-query

我有两张桌子,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

这些会返回所需的结果。

但如果我尝试将它们组合起来:

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

1 个答案:

答案 0 :(得分:0)

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

我希望这应该有效,我没有测试过,只是试着看看