1
我尝试使用下面的SQL检索总量接收,总量从3个表销售:3路SQL加入返回坏数据
select ITEMS.ITEM_NO, SUM(RECEIVINGS.QTY_RECVD), SUM(SALES.QTY_SOLD)
from ITEMS
left join RECEIVINGS
on ITEMS.ITEM_NO = RECEVINGS.ITEM_NO
left join SALES
on ITEMS.ITEM_NO = SALES.ITEM_NO
WHERE ITEMS.ITEM_NO = '12345'
GROUP BY ITEMS.ITEM_NO
以上的回报数据的查询是比实际值高几个数量级。但是,如果我将它分解为两个查询:
select ITEMS.ITEM_NO, SUM(RECEIVINGS.QTY_RECVD)
from ITEMS
left join RECEIVINGS
on ITEMS.ITEM_NO = RECEVINGS.ITEM_NO
WHERE ITEMS.ITEM_NO = '12345'
GROUP BY ITEMS.ITEM_NO
select ITEMS.ITEM_NO, SUM(SALES.QTY_SOLD)
from ITEMS
left join SALES
on ITEMS.ITEM_NO = SALES.ITEM_NO
WHERE ITEMS.ITEM_NO = '12345'
GROUP BY ITEMS.ITEM_NO
它完美地工作。是什么赋予了?是否有任何理由加入所有三个表的第一个查询将无法工作,但两个单独的查询将?
+1,虽然标签上是TSQL,所以它应该是'COALESCE'或'ISNULL'取代'NVL' – Lamak 2012-04-09 15:01:57
+1 - 这几乎肯定是问题所在,以及为纠正它而必须完成的工作类型。 – 2012-04-09 15:04:15
这不是“如果有一个比另一个更多”,它更多“如果任一个有多行,尤其是如果两行都有多行” – 2012-04-09 15:06:58