2016-03-03 46 views

回答

1

如果信用是积极和借方是负的,那么就这样做:

SELECT SUM(amount), 0) 
FROM t 
WHERE user_id = 1; 

如果他们都是积极的,你可以这样做:

SELECT SUM(CASE WHEN type = 2 THEN -amount ELSE amount END) 
FROM t 
WHERE user_id = 1 

(假设类型= 1是信用和类型= 2是借方。)

如果你想要全部用户,只需将WHERE子句更改为GROUP BY user_id即可。

编辑:要回答你的问题有关任何条目给定用户:也许它应该返回NULL如果你问的是谁没有在表中的用户(例如,作为左的一部分加入?) ,但如果你真的想要零,你可以说COALESCE(SUM(...), 0)

+0

感谢您的快速响应。如果没有任何特定用户的条目,它将返回NULL。如何在没有用户输入的情况下返回0.00? –

0
SELECT user_id, 
     SUM(CASE WHEN type = '0' THEN 1 ELSE 0 END) totalDebit, 
     SUM(CASE WHEN type = '1' THEN 1 ELSE 0 END) totalCredit 
    FROM table 
GROUP BY user_id 
+0

我看起来像这样计算的用户有多少次了信用卡或借记卡,但我相信这个问题是问如何计算的当前余额。 –

0

尝试此查询

SELECT user_id, 
    SUM(CASE WHEN type = '1' THEN amount ELSE 0 END) totalDebit, 
    SUM(CASE WHEN type = '0' THEN amount ELSE 0 END) totalCredit 
FROM table 
GROUP BY user_id 
相关问题