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

如何在SSRS中按条件计算成功率百分比?

解决SSRS中计算成功程序百分比的问题

没问题,我来帮你搞定这个SSRS表达式!根据你的需求,要计算(Finished + Running状态的ID数量)占总ID数量的百分比,我分几种情况给你写表达式,还会处理可能的报错场景:

基础核心表达式

这是实现需求的核心逻辑,先统计符合状态的ID数,再除以总ID数得到占比后转成百分比:

=(Count(IIF(Fields!STATE.Value = "Finished" OR Fields!STATE.Value = "Running", Fields!ID.Value, Nothing)) / Count(Fields!ID.Value)) * 100
  • 细节解释:IIF会把状态为Finished或Running的ID保留,其他情况返回Nothing;Count函数会自动忽略Nothing,这样就精准得到了符合条件的ID总数。
  • 后面的Count(Fields!ID.Value)是统计所有非空的ID总数,作为计算占比的分母。

防除以零的安全版

如果你的数据集有可能为空(总ID数为0),直接用上面的表达式会触发报错,所以加个判断逻辑避免异常:

=IIF(Count(Fields!ID.Value) = 0, 0, (Count(IIF(Fields!STATE.Value = "Finished" OR Fields!STATE.Value = "Running", Fields!ID.Value, Nothing)) / Count(Fields!ID.Value)) * 100)

这样当总ID数为0时,会直接返回0,不会出现除以零的错误。

更简便的格式化方式

其实你也可以不用手动乘以100,直接通过文本框的格式设置来显示百分比:

  1. 先写不带*100的表达式:
=IIF(Count(Fields!ID.Value) = 0, 0, Count(IIF(Fields!STATE.Value = "Finished" OR Fields!STATE.Value = "Running", Fields!ID.Value, Nothing)) / Count(Fields!ID.Value))
  1. 选中文本框,右键打开文本框属性→切换到数字选项卡→选择百分比,还可以按需设置小数位数(比如0位或2位)。

额外适配场景

  • 如果ID字段存在空值,需要统计所有记录数的话,可以用Rows.Count代替Count(Fields!ID.Value),示例:
=IIF(Rows.Count = 0, 0, Count(IIF(Fields!STATE.Value = "Finished" OR Fields!STATE.Value = "Running", Fields!ID.Value, Nothing)) / Rows.Count)
  • 如果ID可能重复,需要统计唯一ID的话,把Count换成CountDistinct即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:02:25