2013-01-05 77 views
2
id by for amount 
1 8 5  50 
2 5 7  30 
3 6 5  80 
4 5 3  40 

我怎麼可以這樣做每個SELECT字段的WHERE子句?

SELECT SUM(`amount`)[//WHERE for=5] - SUM(`amount`)[//WHERE by=5] FROM table 
i.e. 130-70 

,所以我有一個表..
,我想執行像上面一個查詢..

回答

2

您可以使用case聲明

SELECT SUM(case when `for`=5 then `amount` else 0 end) - 
     SUM(case when `by`=5 then `amount` else 0 end) 
FROM table 

僅爲特定情況添加amount而否則爲。

+0

簡短的解釋會很好 –

0

你可以做這樣的事情,

SELECT DISTINCT((SELECT SUM(amt) FROM tablename WHERE for = 5) - 
     (SELECT SUM(amt) FROM tablename WHERE by = 5)) 
FROM tablename; 

在MySQL :)

0

您還可以使用IF()功能爲我工作:

SELECT SUM(IF(`for`=5, `amount`, 0)) - 
     SUM(IF(`by`=5, `amount`, 0)) 
FROM tablename 

IF()工作如下:

IF(<condition>, <value if true>, <value if false>) 

我用IF()SUM()添加amount如果for/by是等於5其他0將增加。

0
SELECT 
    SUM(
CASE 
    WHEN _for = 5 
    THEN amount 
    ELSE 0 
END 
) - SUM(
CASE 
    WHEN _by = 5 
    THEN amount 
    ELSE 0 
END 
) AS val 
    FROM temp