Reporting services SSR计数与iif滤波器不同

Reporting services SSR计数与iif滤波器不同,reporting-services,ssrs-2012,Reporting Services,Ssrs 2012,所以这是一个相当复杂的问题。我试图在SSR中的计数上设置一个过滤器。情况是这样的 我在报告中有3个数据集。所有3个数据集都有相同的字段,但构建在不同的代码上 我想在对其中一个字段应用过滤器时,统计其中一个数据集中的不同医院 例如,当日期周期介于3个月前和今天之间时,我想计算不同的医院代码。这是我的 =iif((Fields!DatePeriod.Value, "Rpt_WinBack") between DateAdd("m",-3,Today()) and DateAdd("m",0,Toda

所以这是一个相当复杂的问题。我试图在SSR中的计数上设置一个过滤器。情况是这样的

我在报告中有3个数据集。所有3个数据集都有相同的字段,但构建在不同的代码上

我想在对其中一个字段应用过滤器时,统计其中一个数据集中的不同医院

例如,当日期周期介于3个月前和今天之间时,我想计算不同的医院代码。这是我的

=iif((Fields!DatePeriod.Value, "Rpt_WinBack") between DateAdd("m",-3,Today()) and DateAdd("m",0,Today()), (CountDistinct(Fields!HospCode.Value, "Rpt_WinBack") & " Hospitals"),nothing)
我当前收到一个错误,指出:

Textbox4直接引用字段“DatePeriod”,而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中

医院可能会在多个日期出现

谢谢, 斯科特

试试这个:

=CountDistinct(iif((Fields!DatePeriod.Value, "Rpt_WinBack") between DateAdd("m",-3,Today()) and DateAdd("m",0,Today()), (Fields!HospCode.Value, "Rpt_WinBack"),nothing )) & " Hospitals"

谢谢,但没有乐趣:文本框“Textbox4”的值表达式使用不带作用域的聚合表达式。除非报表仅包含一个数据集,否则数据区域之外使用的所有聚合都需要一个作用域。不确定原因-范围确实调用了单个数据集rpt_WinBack将继续查找。找到了一个解决方法,但不是最好的解决方案。当数据进入报告时,我会过滤数据-问题是,我想将过去几年的数据与今年的数据进行比较。最好在查询中这样做,添加一个列,其中的case语句解析为1或0,然后将该列求和作为最终数字。我可能不得不这样做,只是想在其中保留一些灵活性。这意味着如果用户更改报告上的时间段,它将更改。不幸的是,没有什么是完美的,所以做我们必须做的。感谢您的时间和帮助。如果您继续在RDL中尝试,BarneyL是正确的,您将始终需要对IIF的结果执行聚合。IE:COUNTIIF,SUMIIF不能让SSR尝试将聚合作为表达式的结果之一。