【发布时间】:2022-01-20 09:20:52
【问题描述】:
我已经到处寻找解决问题的方法并尝试了多种方法。
查询试图做的是对表“qo”和表“qoh”中的值求和,并按“SKU”分组。然后它会从另一个中减去一个给我一个我“短”的值。
我的问题:
如果表“qoh”中没有值,则 SKU 不存在,即使是空值也不存在!我希望表“qo”中的总值保持不变,因为没有什么要扣除的,实际发生的是它完全从表“qo”中删除该行并且什么都不返回。
所以基本上,如果它在 qoh 中不存在,那么即使知道 qo 中有一个值,也不会返回任何内容。
谁能看出我哪里出错了?
谢谢
SELECT qo.sku_id
, SUM(qo.QTY_ORDERED_II) AS "Total ordered"
, SUM(qoh.total_inventory) AS "Total Inventory"
, ABS(SUM(QTY_ORDERED_II - TOTAL_INVENTORY)) AS "Short"
FROM
(SELECT SKU_ID, SUM(qty_ordered) AS QTY_ORDERED_II
FROM order_line
GROUP BY order_line.sku_id)
qo
JOIN
(SELECT sku_id, SUM(qty_on_hand) AS TOTAL_INVENTORY
FROM INVENTORY
GROUP BY sku_id)
qoh
ON qo.sku_id = qoh.sku_id
GROUP BY qo.sku_id
HAVING SUM(QTY_ORDERED_II - TOTAL_INVENTORY) > 0
ORDER BY SKU_ID;
【问题讨论】:
-
尝试左连接。
-
@jarlh 不走运。
-
您还需要 COALESCE,按照您当前的逻辑,因为
x - null产生null。x - COALESCE(null, 0)产生x。