You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Group By-使用绝对值实现会计报表交易类型分组统计需求

解决会计报表交易类型合并统计问题

嘿,这个需求我之前帮同行处理过类似场景,用SQL的GROUP BY配合聚合函数就能完美实现,我给你一步步拆解:

核心思路

核心就是按交易类型分组,然后针对每个统计项用对应的聚合函数计算:

  • 总交易数:直接统计分组内的所有记录数
  • 作废交易数:筛选出标记为作废的记录单独统计
  • 交易手续费:直接累加(如果手续费也有正负抵消需求,也可以用ABS处理)
  • 总金额:对金额取绝对值后再求和,这样同类型的正负金额就能合并统计

具体SQL示例

假设你的交易记录表名为TransactionRecords,字段如下:

  • TransactionType:交易类型(比如MailFee、ServiceCharge等)
  • Amount:交易金额(存在正负值)
  • Fee:交易手续费
  • IsCancelled:作废标记(1表示作废,0或NULL表示有效)

对应的SQL代码如下:

SELECT
    TransactionType,
    COUNT(*) AS TotalTransactions,
    COUNT(CASE WHEN IsCancelled = 1 THEN 1 END) AS CancelledTransactions,
    SUM(Fee) AS TotalFees,
    SUM(ABS(Amount)) AS TotalAmount
FROM TransactionRecords
GROUP BY TransactionType
ORDER BY TransactionType;

代码细节解释

  • COUNT(*):统计该交易类型下的所有交易数量,不管是否作废
  • COUNT(CASE WHEN IsCancelled = 1 THEN 1 END):只有当交易是作废状态时才计入统计,NULL值不会被COUNT计算,刚好匹配作废交易数的需求
  • SUM(Fee):累加该类型所有交易的手续费,如果你的手续费也存在正负需要抵消,改成SUM(ABS(Fee))即可
  • SUM(ABS(Amount)):先把每个金额转成绝对值再求和,这样同类型的正负金额就会合并成总金额(比如-$1.25和$1.25会合并为$2.50)

示例输出

执行后你会得到类似这样的报表结果:

TransactionTypeTotalTransactionsCancelledTransactionsTotalFeesTotalAmount
MailFee20$0.50$2.50
ServiceCharge51$2.00$15.00
Refund31$0.75$7.00

如果你的作废标记逻辑、字段名和示例不一样,只需要调整CASE语句里的条件或者字段名称就可以,非常灵活!

内容的提问来源于stack exchange,提问作者MISNole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:13:13