SSRS如何实现行结果除以外层分组行汇总值的计算
你遇到的渲染失败是SSRS的ReportItems作用域限制导致的:在内层分组的单元格中无法直接引用外层分组的ReportItems控件值,不同分组作用域下的控件值不支持跨层级直接调用。
解决方案1:指定作用域的聚合函数(最推荐)
不要通过控件名获取外层分组的总计值,直接使用聚合函数指定外层分组名称作为作用域即可,表达式参考:
=ReportItems("CustCounts2").Value / Sum(Fields!你的统计字段名.Value, "外层行分组名称")
你可以在报表设计器的「行分组」面板中找到外层分组的实际名称,填入表达式的第二个参数即可,注意分组名需要加英文双引号,大小写要和实际名称完全一致。如果你的行总计是整个数据集的汇总值,直接把第二个参数替换为你的数据集名称即可。
解决方案2:通过自定义变量传递值
如果你必须复用外层RowTotal2控件的计算逻辑,可以通过自定义变量中转数值:
- 打开报表属性,在「变量」页添加一个数值类型的自定义变量,可命名为
RowTotalVal - 打开外层行分组的属性,找到「组变量」配置项,给
RowTotalVal赋值为你计算RowTotal2的原表达式 - 在内层分组的占比单元格使用如下表达式即可:
=ReportItems("CustCounts2").Value / Variables!RowTotalVal.Value
优化提示
建议额外处理除数为0的情况,避免渲染时出现#Error错误,优化后的表达式参考:
=IIF( Sum(Fields!你的统计字段名.Value, "外层行分组名称") = 0, 0, ReportItems("CustCounts2").Value / Sum(Fields!你的统计字段名.Value, "外层行分组名称") )
内容的提问来源于stack exchange,提问作者Heather Brouillette
相关产品推荐
相关产品推荐

