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

多CountDistinct结合IIF语句实现分组去重计数的问题求助

按分组条件统计去重记录数的解决方案

错误原因分析

  • 第一种写法用OR连接两个COUNTDISTINCT聚合函数:OR是逻辑判断运算符,只能返回布尔值(True/False),不能用于拼接聚合结果,因此运行报错。
  • 第二种写法在同一字段中写两个独立表达式:SSRS会将其视为逻辑判断(判断两个表达式是否同时成立),因此返回布尔值而非预期的计数值。

正确实现方式

要在同一字段中分别显示不同分组的去重计数结果,需将两个COUNTDISTINCT的计算结果转换为字符串后拼接,示例表达式如下:

="分组1符合条件的去重记录数: " & COUNTDISTINCT(IIF(Fields!GroupNum.Value = 1 AND Fields!TenName.Value <> "" AND NOT(Fields!Unit.Value LIKE "*WAIT*"), Fields!Unit.Value, Nothing)) & vbCrLf & "分组2符合条件的去重记录数: " & COUNTDISTINCT(IIF(Fields!GroupNum.Value = 2 AND Fields!TenName.Value <> "", Fields!Unit.Value, Nothing))
  • 若需同一行展示两个分组结果,可将vbCrLf替换为逗号或空格:
="分组1: " & COUNTDISTINCT(IIF(Fields!GroupNum.Value = 1 AND Fields!TenName.Value <> "" AND NOT(Fields!Unit.Value LIKE "*WAIT*"), Fields!Unit.Value, Nothing)) & ", 分组2: " & COUNTDISTINCT(IIF(Fields!GroupNum.Value = 2 AND Fields!TenName.Value <> "", Fields!Unit.Value, Nothing))

补充说明

  • COUNTDISTINCT会自动忽略Nothing值,因此符合条件的Unit值会被统计,不符合的会直接排除。
  • 后续若需扩展更多分组,只需按相同格式追加COUNTDISTINCT的计算逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:20:24