【问题标题】:SSRS Count Distinct with iif filterSSRS Count Distinct 与 iif 过滤器
【发布时间】:2014-07-10 15:53:18
【问题描述】:

所以这是一个相当复杂的问题。我正在尝试对 SSRS 中不同的计数进行过滤。情况如下。

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

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

例如,当 DatePeriod 介于 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' 而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的归档引用必须包含在指定数据集范围的聚合函数中。”

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

谢谢, 斯科特

【问题讨论】:

    标签: reporting-services ssrs-2012


    【解决方案1】:

    试试这个:

    =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”将继续查找。找到了解决方法,但不是最好的解决方案。我在进入报告时过滤数据 - 问题是,我想将去年的数据与今年的数据进行比较。
    • 最好在您的查询中执行此操作,添加一个包含解析为 1 或 0 的 case 语句的列,然后将该列相加得到您的最终数字。
    • 我可能不得不这样做,只是想在其中保留一些灵活性。这意味着如果用户更改报告上的时间段,它将更改。不幸的是,没有什么是完美的,所以做我们必须做的。
    • 感谢您的宝贵时间和帮助。
    • 如果您继续在 RDL 中尝试,BarneyL 是正确的,您将始终需要对 IIF() 的结果执行聚合。 IE: COUNT(IIF()), SUM(IIF()) 您不能让 SSRS 尝试将聚合作为表达式的结果之一。
    猜你喜欢
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2016-04-04
    • 2013-05-12
    • 2019-09-16
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    相关资源
    最近更新 更多