You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SSRS技术求助:如何计算非零值期间的总计平均值?

解决SSRS中计算非零总计期间平均值的问题

我完全懂你的需求——要把所有月份的总计总和,除以那些总计不为零的月份数量,得到正确的平均值对吧?你之前尝试用CountDistinct结合IIF没成功,是因为CountDistinct是用来统计不同值的个数,而咱们需要的是非零行的数量,换个方式就能搞定了。

核心表达式实现

直接用下面的表达式就能得到你要的结果:

=IIF(Sum(IIF(Fields!Total.Value <> 0, 1, 0)) = 0, 0, Sum(Fields!Total.Value) / Sum(IIF(Fields!Total.Value <> 0, 1, 0)))

拆解一下这个表达式的逻辑:

  • Sum(Fields!Total.Value):计算所有月份总计的总和(也就是你例子里的27,377)
  • Sum(IIF(Fields!Total.Value <> 0, 1, 0)):遍历每一行,遇到总计非零的就计1,最后求和得到非零月份的数量(你的例子里是5)
  • 外层的IIF是做容错处理:如果所有月份的总计都是0,分母为0会报错,这时候返回0避免错误。

为什么不用CountDistinct?

CountDistinct(Fields!Total.Value)会统计所有不同的总计值的数量,比如如果有多个月份的总计是同一个非零值,它只会算一次,这显然不是你想要的“非零月份的个数”,所以用Sum(IIF(...))来计数才是准确的。

格式设置

把这个表达式放到你需要显示平均值的文本框里后,记得在文本框的格式设置里选择数值或货币格式,保留两位小数,这样就能得到你想要的5,475.40的展示效果啦。

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

火山引擎 最新活动