我有一张桌子 shipments
:
--------------------------
id | event | quantity |
--------------------------
1 | received | 20 |
2 | sent | 30 |
3 | received | 45 |
我想要一个对所有 received
数量求和的查询,然后从 sent
数量中减去该值。查询应返回 35
的结果。
SELECT SUM(quantity)
FROM shipments
WHERE event = 'received';
此查询返回 65
。我怎样才能让它也减去 sent
数量(并得到 35
的结果)?
答案 0 :(得分:2)
使用 CASE
表达式,根据 event
放置一个符号。
SELECT sum(CASE event
WHEN 'received' THEN
quantity
WHEN 'sent' THEN
-quantity
ELSE
0
END)
FROM shipments;