SSRS 按分组统计去重计数的条件表达式编写方法求助
SSRS多维度去重计数实现方案
核心表达式
直接使用CountDistinct结合条件判断即可实现所有维度下的需求,表达式写法如下:
=CountDistinct(IIF(Fields!Above_MRL.Value = True, Fields!Sample_ID.Value, Nothing))
逻辑说明
- 先用
IIF函数判断行记录是否满足[Above MRL]条件:满足则返回对应的Sample ID,不满足则返回空值Nothing CountDistinct函数会自动忽略空值,仅对返回的Sample ID做去重计数,每个符合条件的Sample ID仅会被统计1次
多维度适配说明
该表达式无需修改即可适配所有层级的分组统计:
- 放置在产品类别(如Canola、almond、apples)分组的组头/组脚时,会自动统计对应类别下的去重符合条件Sample ID数量
- 放置在工厂层级分组的组头/组脚时,会自动统计该工厂下所有产品的合并去重符合条件Sample ID数量
- 放置在矩阵数据单元格时,会自动适配当前行/列维度的统计范围
注意事项
- 若[Above MRL]字段为数值类型(用1代表符合条件),将判断条件改为
Fields!Above_MRL.Value = 1即可 - 若[Above MRL]为字符串类型(用"Yes"代表符合条件),将判断条件改为
Fields!Above_MRL.Value = "Yes"即可 - 若字段存在空值可能,可优化为带空值判断的版本:
=CountDistinct(IIF(IsNothing(Fields!Above_MRL.Value) = False AndAlso Fields!Above_MRL.Value = True, Fields!Sample_ID.Value, Nothing))
参考截图


内容的提问来源于stack exchange,提问作者noneother
相关产品推荐
相关产品推荐

