1

次のクエリがあります。

SELECT user_id, SUM( credit ) AS cred, SUM( debit ) AS deb FROM account WHERE user_id = '35'

貸方から借方を差し引いて、1 つの列に表示するか、変数の値として表示したい

4

2 に答える 2

3

SUMこれは機能するはずで、おそらく他の 2 つのsを実行するよりもわずかに高速です。

SELECT a.user_id, 
       a.cred, 
       a.deb, 
       a.deb - a.cred AS value 
FROM   (SELECT user_id, 
               Sum(credit) AS cred, 
               Sum(debit)  AS deb 
        FROM   account 
        WHERE  user_id = '35') a 

複数のユーザーがいる場合は、次のようなことができます。

SELECT a.user_id, 
       a.cred, 
       a.deb, 
       a.deb - a.cred AS value 
FROM   (SELECT user_id, 
               Sum(credit) AS cred, 
               Sum(debit)  AS deb 
        FROM   account 
        WHERE  user_id IN (35, 36, 39)
        GROUP BY user_id) a 

デモを見る

于 2013-03-01T16:28:56.610 に答える
1

同じ行で差を計算できます

SELECT  user_id, 
        SUM(credit) AS cred, 
        SUM(debit) AS deb,
        SUM(credit) -  SUM(debit) total
FROM account 
WHERE user_id = 35

更新 1

SELECT  user_id, 
        SUM(credit) AS cred, 
        SUM(debit) AS deb,
        SUM(credit) -  SUM(debit) total
FROM account 
WHERE user_id IN (30,31,32,33,34,35)
GROUP BY user_ID

更新 2

SELECT  user_id, 
        SUM(credit) AS cred, 
        SUM(debit) AS deb,
        SUM(credit) -  SUM(debit) total
FROM account 
WHERE user_id IN (30,31,32,33,34,35)
GROUP BY user_ID
HAVING (SUM(credit) -  SUM(debit)) < 10
于 2013-03-01T16:28:40.280 に答える