如何编写SELECT查询获取两类交易总和、借贷合计及差值
解决交易类型统计的SQL查询方案
嘿,我来帮你搞定这个交易统计的需求!根据你的描述,我们可以用两种不同的SQL写法来满足要求,下面分别说明:
方式一:一次性获取所有统计结果(推荐)
这个查询会直接返回贷方总额、借方总额,以及二者的差值,同时也明确给出了两种交易类型的总和:
SELECT -- 统计贷方(类型0)的总额 SUM(CASE WHEN transaction_type = 0 THEN amount ELSE 0 END) AS sum_credit, -- 统计借方(类型1)的总额 SUM(CASE WHEN transaction_type = 1 THEN amount ELSE 0 END) AS sum_debit, -- 计算贷方与借方的差值(贷方减借方,如需反向可调整符号) SUM(CASE WHEN transaction_type = 0 THEN amount ELSE -amount END) AS balance_difference, -- 单独列出贷方总和(和sum_credit一致,可根据需求选择保留) SUM(CASE WHEN transaction_type = 0 THEN amount ELSE 0 END) AS credit_total, -- 单独列出借方总和(和sum_debit一致,可根据需求选择保留) SUM(CASE WHEN transaction_type = 1 THEN amount ELSE 0 END) AS debit_total FROM transactions;
说明:
- 这里假设你的交易表名为
transactions,金额字段是amount,交易类型字段是transaction_type,如果你的字段/表名不同,直接替换即可。 balance_difference的计算逻辑是贷方总额 - 借方总额,如果需要借方减贷方,把ELSE -amount改成ELSE amount,同时把THEN amount改成THEN -amount就行。
方式二:按交易类型分组统计总和
如果你需要单独查看每种交易类型的总和(一行显示贷方,一行显示借方),可以用这个分组查询:
SELECT -- 把数字类型转换成易读的分类名称 CASE transaction_type WHEN 0 THEN 'Credit' WHEN 1 THEN 'Debit' ELSE 'Unknown' END AS transaction_category, -- 计算该类型的交易总额 SUM(amount) AS total_amount FROM transactions GROUP BY transaction_type;
这个查询的结果会是两行(如果只有0和1两种类型),清晰展示每种交易类型的总金额。
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

