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

SSRS报表:如何统计分组后第一列的数值数量

解决SSRS报表中Number列去重计数的问题

嗨,我来帮你搞定这个SSRS的计数需求!你要的是统计Number列不同数值的总数量(也就是去重后的计数,比如示例里的5),而不是分组内的行数或者表格总行数,对吧?下面给你两种靠谱的实现方法:

方法一:用SSRS表达式直接计算(推荐)

如果你的报表已经按Number列完成分组,只需要在表格底部加一个总计行,然后用带作用域的去重计数表达式:

  1. 右键点击行组面板里的「详细信息」组,选择「添加组」→「总计」→「在底部」,这样就会在表格最下方生成一个汇总行。
  2. 在这个汇总行的Number列对应的单元格中,输入以下表达式:
    =CountDistinct(Fields!Number.Value, "你的数据集名称")
    
    注意把你的数据集名称替换成你实际使用的数据集名字(可以在报表数据面板里找到)。指定数据集作为作用域后,这个表达式会忽略分组的影响,直接统计整个数据集中Number列的不同值数量。

方法二:在数据集查询层面预先统计

如果你更习惯在SQL里处理数据,可以修改你的数据集查询,提前计算好去重后的数量:

SELECT 
    Number, 
    [Order], 
    Month,
    -- 其他字段
    COUNT(DISTINCT Number) OVER () AS UniqueNumberCount
FROM 你的数据表

这样查询结果里会多出一个UniqueNumberCount字段,每行的值都是去重后的Number总数,你只需要在报表底部的汇总行里直接引用这个字段就行:=First(Fields!UniqueNumberCount.Value)

为什么之前的方法没生效?

  • 用Count(Fields!Number.Value)会统计表格的总行数,没有去重;
  • 分组内的汇总只会统计当前分组的行数,不是全局的去重计数;
  • 而CountDistinct加上数据集作用域,正好能满足你要的「全局去重计数」需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:55