我想要和值,这个值比category
表:
id | value | category
1 | 1000 | income
2 | 500 | income
3 | 600 | expense
收入为正,收入为负
对于此表,我想获得SUM
并返回900
//1000+500-600
答案 0 :(得分:2)
您的查询应如下所示
select sum( if(category='income', value, -1 * value) )
from table
如果expr1为TRUE(expr1<> 0且expr1<> NULL),则IF()返回 表达式2;否则返回expr3。 IF()返回一个数字或字符串 值,取决于使用它的上下文。
答案 1 :(得分:0)
创建表/插入数据
CREATE TABLE t
(`id` INT, `value` INT, `category` VARCHAR(7))
;
INSERT INTO t
(`id`, `value`, `category`)
VALUES
(1, 1000, 'income'),
(2, 500, 'income'),
(3, 600, 'expense')
;
<强>查询强>
SELECT (
SUM(CASE WHEN t.category = 'income' THEN t.value END) -- only sum category = 'income'
-
SUM(CASE WHEN t.category = 'expense' THEN t.value END) -- only sum category = 'expense'
)
AS total
FROM
t
<强>结果强>
total
--------
900