2
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  

だから私はテーブルを持っています..
そして私は上記のようなクエリを実行したいと思います..

4

4 に答える 4

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ます。

于 2013-01-05T10:27:52.413 に答える
0

あなたはこのようなことをすることができます、

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

MySQLで私のために働いた:)

于 2013-01-05T10:37:21.710 に答える
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()withinを使用しSUM() て追加 amountし、 isがelseに等しい場合 は追加されます。for/by5 0

于 2013-01-05T10:38:44.297 に答える
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
于 2013-01-05T10:54:27.807 に答える