mysql查询从1表中返回不同条件的同一列的总和

时间:2015-01-23 09:26:37

标签: mysql

我有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。

2 个答案:

答案 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