SSRS 计数或求和表达式

SSRS Count or Sum expression

我不明白为什么这些 Total 表达式不起作用...

我正在尝试将日期晚于今天的任何单元格与具有 "Not Reqd" 的任何单元格相加,然后将其除以行数,以获得百分比。

我得到的只是 #Error

这些是我试过的表达方式:

=SUM(IIf(Fields!Jetter_Trng.Value >Today OR 
Fields!Jetter_Trng.Value = "Not Reqd",1,0)))/(Count(Fields!Jetter_Trng.Value)

=Count(IIf(Fields!Jetter_Trng.Value >Today OR 
Fields!Jetter_Trng.Value = "Not Reqd",1,Nothing)))/(Count(Fields!Jetter_Trng.Value)

"Not Reqd" 字符串来自将日期 (01/01/1950) 更改为 "Not Reqd" 的表达式。也许这是把事情搞砸了:

=iif(Fields!Jetter_Trng.Value = "01/01/1950", "Not Reqd", Fields!Jetter_Trng.Value)

当前工作表达式(不是寻找"Not Reqd")是:

=COUNT(IIF(Fields!Jetter_Trng.Value>Today,1,Nothing)))/(Count(Fields!Name.Value))

我有点迷茫...

关于你目前的表达的几点说明

  • Jetter_Trng 似乎是表示日期或“Not Reqd”的字符串。如果不首先使用 CDATE()

  • 将字符串转换为日期类型,则无法将字符串与日期进行比较
  • 大括号数量(())不匹配

你的问题的根源是你正在使用 Jetter_Trng 到 return 一个日期,或者值“Not Reqd”。

当 SSRS 尝试计算一个表达式时,它会同时进行。它不遵循寻找答案的路径,而忽略其他路径。因此,当您尝试比较

Fields!Jetter_Trng.Value >Today

这是将字符串与日期进行比较,并抛出错误,因为这毫无意义

"Not Reqd" > Today

您将无法仅使用一个字符串类型的字段来完成所有您想做的事情。

你的选择是

  • 使用两个字段——日期和表示不需要的标志,或者
  • 使用一个字段 - 但有一个“无效日期”(可能是 01/01/2100),然后您可以将其视为“不需要”值,并检查当前日期是否小于该日期(它永远都会)

使用此处的第二个选项,您可以使用以下表达式创建所需的计算

=sum(iif(CDate(Fields!Jetter_Trng.Value) > Today, 1, 0)) / 
 Count(Fields!Jetter_Trng.Value)

将按如下方式评估此数据集