id by for amount
1 8 5 50
2 5 7 30
3 6 5 80
4 5 3 40
我该怎么做
SELECT SUM(`amount`)[//WHERE for=5] - SUM(`amount`)[//WHERE by=5] FROM table
i.e. 130-70
所以我有一张桌子..
我想执行类似上面的查询..
答案 0 :(得分: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
。
答案 1 :(得分:0)
你可以这样做,
SELECT DISTINCT((SELECT SUM(amt) FROM tablename WHERE for = 5) -
(SELECT SUM(amt) FROM tablename WHERE by = 5))
FROM tablename;
在MySQL工作:)
答案 2 :(得分: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
等于{{1将添加其他 5
。
答案 3 :(得分: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