2013-01-05 79 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