1

これは一般的な SQL の質問です

私はこの表 (簡略化) を持っています。貸方は正、借方は負です。

Account Amount  Type
--------------------
john    25      credit  
john    45      debit  
john    5       debit  
john    15      credit  
mike    15      credit  

を使用して単一のクエリを使用して、次のような結果が必要ですCase When

Account  Total
--------------------
john     -10      
mike     15      

ご提案いただきありがとうございます。

4

3 に答える 3

3

この構造を使用して、CASE借方エントリと貸方エントリを区別できます。

SELECT   account, SUM (amount * CASE type WHEN 'credit' THEN 1 ELSE -1 END)
FROM     my_table
GROUP BY account
于 2013-10-17T12:12:33.603 に答える
1

より理にかなっている場合は、次のことを試すこともできます。

SELECT a.Account, b.Credits - a.Debits AS Total FROM
    (SELECT Account, SUM(Amount) AS Debits
        FROM YourTable GROUP BY Account HAVING Type = 'debit'
    ) AS a
    INNER JOIN
    (SELECT Account, SUM(Amount) AS Credits
        FROM YourTable GROUP BY Account HAVING Type = 'credit'
    ) AS b
于 2013-10-17T12:15:23.737 に答える
0
sum(amount * case when type = 'debit' then -1 else 1 end)
于 2013-10-17T12:13:21.950 に答える