2017-02-23 59 views
-2

我想總結的值,這個值比categoryPHP MySQL的總和減去條件

表:

id | value | category 

1 | 1000 | income 

2 | 500 | income 

3 | 600 | expense 

收益爲正,收益爲負

對於這個表我想要得到SUM並返回900//1000+500-600

+3

你需要養成[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)的習慣,它可以幫助你解決你的問題。您將獲得積分,其他人將被鼓勵幫助您。 –

+0

在[mysql查詢中的條件]中可能有[SUM或SUBTRACTION]的副本(http://stackoverflow.com/questions/24791226/sum-or-subtraction-upon-condition-in-mysql-query) – orvi

回答

2

您的查詢應該是這樣的

select sum(if(category='income', value, -1 * value)) 
from table 

MYSQL documentation

如果表達式1爲真(表達式1 <> 0和表達式1 <> NULL),那麼IF()返回 表達式2;否則它返回expr3。 IF()返回數值或字符串值 ,具體取決於使用它的上下文。

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