SSRS计数或总和表达式

时间:2015-12-09 12:47:16

标签: reporting-services count sum ssrs-2008-r2 ssrs-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))

我有点失落......

1 个答案:

答案 0 :(得分:0)

关于你目前表达的几个注释

  • Jetter_Trng似乎是一个表示日期或“Not Reqd”的字符串。您无法将字符串与日期进行比较,而无需先使用CDATE()

  • 将它们转换为日期类型
  • 大括号(())不匹配

问题的根源在于您使用Jetter_Trng返回日期或值“Not Reqd”。

当SSRS尝试评估表达式时,它会同时执行所有操作。它不遵循找到答案的路径,而忽略其他路径。因此,当您尝试比较时

Fields!Jetter_Trng.Value >Today

这是将字符串与日期进行比较,并抛出错误,因为这意味着什么

"Not Reqd" > Today

您将无法完成所有仅使用一个字符串类型字段的操作。

您的选择是

  • 使用两个字段 - 日期和表示不需要的标志,或
  • 使用一个字段 - 但是有一个“无效日期”(也许是01/01/2100),然后您可以将其视为“Not Reqd”值,并检查当前日期是否小于该值(它始终是定)

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

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

将评估此数据集如下

enter image description here