我有1个具有列数量的事务表。该表看起来像这样
item quantity
1 10
1 15
1 -10
2 10
3 5
3 -10
数量为+表示买入, - 表示出售。我想在1个查询中按item_id计算买卖组的数量总和。
结果应该是这样的:
item buy sell
1 25 -10
2 10 0
3 5 10
我试图像这样进行查询:
SELECT item, SUM(quantity>0) as buy, SUM(quantity<0) as sell FROM table GROUP BY item
但它会返回行数而不是数量之和。知道如何在1个查询中执行此操作吗?非常感谢!
PS:我知道我必须使用IF NULL来获取第2项而不是null。
答案 0 :(得分:0)
您可以使用case
:
select item, sum(case when quantity>0 then quantity else 0 end) as buy,
sum(case when quantity<0 then quantity else 0 end) as sell
from x
答案 1 :(得分:0)
您可以像这样使用,
SELECT item,SUM(CASE WHEN quantity > 0 THEN quantity END) AS buy
,SUM(CASE WHEN quantity < 0 THEN quantity END) AS Sell
FROM `test`
GROUP BY item