Mysql SQL从两个表中选择SUM并按分组

Mysql SQL从两个表中选择SUM并按分组,mysql,Mysql,我有两张桌子(PO和GRN)。 我想得到: [这就是我正在做的:][1] 我得到这些结果(错误的订单数量、GRN数量和GRN余额) 我期待的是: | Item | PONO | po_qty | GRN_qty | GRN_balance | |------|------|--------|---------|-------------| | A | po1 | 70 | 65 | 5 | | B | po1 | 50 |

我有两张桌子(PO和GRN)。 我想得到: [这就是我正在做的:][1]

我得到这些结果(错误的订单数量、GRN数量和GRN余额)

我期待的是:

| Item | PONO | po_qty | GRN_qty | GRN_balance |
|------|------|--------|---------|-------------|
|    A |  po1 |     70 |      65 |           5 |
|    B |  po1 |     50 |       0 |          50 |
|    C |  po2 |     10 |       5 |           5 |
|    D |  po3 |     20 |       0 |          20 |
|    A |  po4 |     15 |      10 |           5 |

我修改了你的SQL。请执行并查看

SELECT PO.Item,PO.PONO,
       PO.Qty as po_qty,
       GRN.Qty as GRN_qty,
  PO.Qty- GRN.Qty as GRN_balance
from PO,GRN
group by PO.Item

谢谢..

这里有一个方法

select 
p.Item,
p.PONO,
sum(p.Qty) as po_qty,
coalesce(g.GRN_qty,0) ,
sum(p.Qty) - coalesce(g.GRN_qty,0) as GRN_balance
from PO p
left join (
  select PONO,Item,sum(Qty) as GRN_qty from GRN
  group by PONO,Item
)g
on g.PONO = p.PONO and g.Item = p.Item
group by p.Item,p.PONO
order by p.PONO

这是一个错误的答案,我想你应该先使用join,然后使用subtract,因为这个值来自不同的表。这不会给出与预期结果相同的结果,你缺少最后一列。平衡也是完全不同的。