如何在mysql中获得两种不同类型事务的总和之差

如何在mysql中获得两种不同类型事务的总和之差,mysql,Mysql,第1类-借方 0-学分 我想得到一个用户的当前余额,即所有贷方的总和-所有借方的总和 有人能帮我解答这个问题吗?如果贷项是正的,而借项是负的,那么就这样做: table - id, user_id, amount, type int(1), timestamp. SELECT user_id, SUM(CASE WHEN type = '0' THEN 1 ELSE 0 END) totalDebit, SUM(CASE WHEN type = '1' THEN

第1类-借方 0-学分

我想得到一个用户的当前余额,即所有贷方的总和-所有借方的总和


有人能帮我解答这个问题吗?

如果贷项是正的,而借项是负的,那么就这样做:

table - id, user_id, amount, type int(1), timestamp.
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
如果两者均为阳性,您可以这样做:

SELECT SUM(amount), 0)
FROM t
WHERE user_id = 1;
(假设type=1是贷方,type=2是借方。)

如果希望所有用户都使用它,只需将
WHERE
子句更改为
groupbyuserid

编辑:要回答您关于给定用户没有条目的问题:如果您询问一个不在表中的用户(例如,作为左联接的一部分),它可能会返回
NULL
,但如果您确实想要零,则可以说
合并(和(…),0)
尝试此查询

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

我想这会计算用户有多少次贷记或借记,但我相信问题在于如何计算当前余额。感谢您的快速回复。如果没有任何特定用户的条目,则返回NULL。如果用户没有输入,如何使其返回0.00?
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