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

如何在Crystal Report中对重复交易号对应的金额实现去重求和

Crystal Report按交易号去重求和实现方法

你需要对两组独立的交易号&金额字段分别做去重统计,以下是两种常用可行方案:

方案1:使用运行总和字段(无需改数据源,适合小数据量场景)

使用前请先将报表数据按对应交易号字段排序,否则相邻行判断逻辑会失效:

统计去重后的Amount1总和

  • 打开字段资源管理器,右键「运行总和字段」选择「新建」,命名为sum_distinct_amount1
  • 「要汇总的字段」选择表中的Amount1字段,计算类型选择「求和」
  • 「求值」规则选择「按公式」,点击公式按钮输入以下逻辑后保存:
    OnFirstRecord OR {你的表名.Transaction No1} <> Previous({你的表名.Transaction No1})
    
  • 「重置」规则选择「从不」(如果是按分组统计就选择对应分组的「组更改」)

统计去重后的Amount2总和

和上述操作逻辑一致,仅修改对应字段即可:

  • 新建运行总和字段sum_distinct_amount2
  • 汇总字段选Amount2
  • 求值公式改为:
    OnFirstRecord OR {你的表名.Transaction No2} <> Previous({你的表名.Transaction No2})
    
  • 重置规则和Amount1的设置保持一致

方案2:修改数据源查询SQL(性能更优,适合大数据量场景)

如果你的报表数据是通过自定义SQL取数,直接在取数阶段完成去重,计算效率更高:

  • 取Amount1去重求和的SQL示例:
    SELECT SUM(Amount1) AS sum_amount1 
    FROM (SELECT DISTINCT [Transaction No1], Amount1 FROM 你的表名) t1
    
  • 取Amount2去重求和的SQL示例:
    SELECT SUM(Amount2) AS sum_amount2 
    FROM (SELECT DISTINCT [Transaction No2], Amount2 FROM 你的表名) t2
    

两种方案计算结果和你示例的预期结果完全匹配:Amount1求和为13000,Amount2求和为12500。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:57:02