【问题标题】:How to use aggregate function to filter a dataset in ssrs 2008如何使用聚合函数过滤 ssrs 2008 中的数据集
【发布时间】:2016-04-04 13:59:37
【问题描述】:

我在 ssrs2008 中有一个矩阵,如下所示:

GroupName   Zone    CompletedVolume 
Cancer      1       7
Tunnel      1       10
Surgery     1       64

ComplatedVolume 值来自特定表达式<<expr>>,等于:[Max(CVolume)]

这个矩阵由一个存储过程填充,如果可能,我不应该更改它。我需要做的是不显示 CompletedVolume [Max(Q9Volume)] >= 50 这样的过滤器,但是当我尝试运行报告时它说aggregate functions cannot be used in dataset filters or data region filters. How我可以尽可能简单地解决这个问题吗?

请注意,在 sql 查询中添加 where 子句不会解决此问题,因为有许多其他表使用相同的 SP,并且它们需要 CompletedVolume

编辑:我试图在 SP 上设置 max(Q9Volume) 值,但发生了一些我以前从未见过的事情。查询是这样的:

Select r.* from (select * from results1 union select * from results2) r 
left outer join procedures p on r.pid = p.id

有趣的是,当我运行查询时,我看到的一些列既不包含在 results1/results2 也不包含在过程表中。例如,表(result1、result2 和过程)中没有像 Q9Volume 这样的列,但是当我运行查询时,我会看到输出中的列!这怎么可能?

【问题讨论】:

  • 你试过了吗:where CompletedValume >= 50?我不明白为什么需要聚合。
  • @GordonLinoff,OP 正在使用 SSRS 上的聚合表达式计算 CompletedVolume。您提出的建议可以在 SP 查询中使用 HAVING 子句。
  • 使用Q9Volume >= 50

标签: sql sql-server reporting-services ssrs-2008 ssrs-2008-r2


【解决方案1】:

[Max(CVolume)] 小于或等于50 时,您可以将Row hidden 属性设置为True。

选择行并转到行可见性

选择根据表达式显示或隐藏选项并使用此表达式:

=IIF(
Max(Fields!Q9Volume.Value)<=50,
True,False
)

它将显示如下内容:

注意 Cancer 和 Tunnel 的最大值分别是 7 和 10,所以 如果您应用上述表达式,它们将被隐藏。

如果这有帮助,请告诉我。

【讨论】:

  • 谢谢!你是 ssrs2008 的英雄
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 2016-09-27
  • 2019-11-06
  • 1970-01-01
相关资源
最近更新 更多