SQL 加入总和

SQL SUM ON JOIN

先生,我有 3 SQL tables 即库存、采购和销售。 在库存 table 中,我有 SKU、数量、MRP 等字段 在购买 table 中,我有 SKU、purch_qty、purch_date 等字段。 在已售出的 table 中,我有 SKU、sold_qty、sold_date 等字段

我的查询是当我想创建一个视图时,我可以在其中查看所有初始数量为 sold_qty、puch_qty、availabe_Qty 的 SKU,例如(SKU,initial_qty, purchased_qty, sold_qty, stock_availabe)

我尝试在 SKU 上加入这些 table,但结果是数量的两倍。

你能帮我解决这个问题吗?

我的sql查询码是

    SELECT        stk.id, stk.sku, SUM(stk.qty) AS Initial_Qty, SUM(pur.qty) AS Purch_Qty, SUM(sld.qty) AS Sold_Qty
FROM            dbo.stock AS stk LEFT OUTER JOIN
                         dbo.sold AS sld ON stk.sku = sld.sku LEFT OUTER JOIN
                         dbo.purchase AS pur ON stk.sku = pur.sku
GROUP BY stk.id, stk.sku

基本上,您需要在加入之前在子查询中进行聚合。您想要的逻辑应该如下所示:

select st.sku, st.qty stock_qty, pu.purch_qty, so.sold_qty
from stock st
left join (select sku, sum(purch_qty) purch_qty from purchase group by sku) pu 
    on pu.sku = st.sku
left join (select sku, sum(sold_qty) sold_qty from sold group by sku) so
    on so.sku = st.sku