【发布时间】:2020-06-26 16:47:54
【问题描述】:
我有一个场景,我有两个表
订购
ORDER_NO
LOCATION
ITEM
QTY_RECEIVED
发货
ORDER_NO
LOCATION
ITEM
QTY_RECEIVED
在某些情况下,ORDER 表有记录但 SHIPMENT 表没有记录
我想要 ORDER 表中数量不等于 SHIPMENT 表中的数量的所有行,这将包括 ORDER 中但不在装运中的行。
我试过这样做:
SELECT
order_no, item, location, SUM(NVL(QTY_RECEIVED, 0))
FROM
ORDERS ol
GROUP BY
ORDER_NO, ITEM, LOCATION
HAVING
SUM (NVL(ol.QTY_RECEIVED,0)) <>
(SELECT SUM(NVL(sk.QTY_RECEIVED, 0))
FROM shipment s
WHERE s.order_no = ol.order_no
AND s.item (+)= ol.item
AND s.location (+) = ol.location
GROUP BY s.order_no, s.item, s.location);
但它没有给出正确的结果。
我应该怎么做?
【问题讨论】:
标签: sql oracle join group-by outer-join