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

SSRS(SQL Server 2019)按分组统计字段值计数并控制组显示隐藏

在SSRS(SQL Server 2019)中按组统计code值并控制组显示/隐藏的实现方法

一、实现分组内各code值的统计

按name字段创建组后,直接用表达式就能统计每组内M、S、W的数量:

  • 统计当前组内M的数量:=Sum(IIF(Fields!code.Value = "M", 1, 0), "NameGroup")
  • 统计当前组内S的数量:=Sum(IIF(Fields!code.Value = "S", 1, 0), "NameGroup")
  • 统计当前组内W的数量:=Sum(IIF(Fields!code.Value = "W", 1, 0), "NameGroup")

注意:这里的NameGroup要替换成你实际创建的name组的名称,这个参数确保统计范围是当前name组,就算组里没有对应code值,也会返回0(比如示例中Joe组的M数量就是0)。

二、基于统计值控制组的显示/隐藏

找到你要控制显示隐藏的组元素(比如组的明细行、组头或组尾),右键打开「属性」,在「可见性」选项卡选择「基于表达式显示或隐藏」,然后编写对应的条件表达式:

  • 举个例子:如果要隐藏没有M和W的组(比如示例里的Joe组),表达式写:
    =IIF(Sum(IIF(Fields!code.Value = "M", 1, 0), "NameGroup") = 0 AND Sum(IIF(Fields!code.Value = "W", 1, 0), "NameGroup") = 0, True, False)
  • 逻辑说明:True代表隐藏,False代表显示,你可以根据自己的需求调整条件(比如隐藏S数量小于2的组等)。

三、更简洁的替代方案:SQL查询提前统计

不想在报表里写复杂表达式的话,直接在数据源的SQL查询里统计好每个name对应的各code数量:

SELECT 
    name,
    SUM(CASE WHEN code = 'M' THEN 1 ELSE 0 END) AS CountM,
    SUM(CASE WHEN code = 'S' THEN 1 ELSE 0 END) AS CountS,
    SUM(CASE WHEN code = 'W' THEN 1 ELSE 0 END) AS CountW
FROM YourTable
GROUP BY name

这样报表里直接用Fields!CountM.Value、Fields!CountS.Value这些字段来写显示隐藏的表达式,更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:24:29