2016-04-04 95 views
1

我在ssrs2008矩阵象下面这样:[Max(CVolume)]如何使用聚集函数来筛选SSRS数据集2008

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

ComplatedVolume值由特异性表达<<expr>>,其等于来

这个矩阵由存储过程填充,如果可能,我不应该改变它。我需要做的是不要显示CompletedVolume为< = 50的数据。我试图去tablix属性并添加一个像[Max(Q9Volume)] >= 50这样的过滤器,但是当我尝试运行报告时,它说的是aggregate functions cannot be used in dataset filters or data region filters.我该如何解决这个问题尽可能简单?

请注意,在sql查询中添加where子句并不能解决此问题,因为还有许多其他表使用相同的SP,并且他们需要CompletedVolume < = 50的数据。任何帮助将不胜感激。

编辑:我想要SP上的最大(Q9Volume)值,但发生的事情我从来没有见过。查询是这样的:

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

有趣的,这是有一些列我看不会因没有结果1 /结果2也不程序表包括当我运行查询。例如,表中没有像Q9Volume这样的列(result1,result2和procedures),但是当我运行查询时,我在输出中看到了列!这怎么可能?

+0

你试过了:'Where CompletedValume> = 50'?我不明白为什么总和是必要的。 –

+0

@GordonLinoff,OP通过使用SSRS上的聚合表达式来计算CompletedVolume。你提出的建议可以在SP查询中使用'HAVING'子句。 –

+1

使用'Q9Volume> = 50' – JamieD77

回答

2

您可以设置隐藏行属性为True时[Max(CVolume)]小于或等于大于50

选择该行并转到行可见

enter image description here

选择显示或隐藏基于表达式选项并使用以下表达式:

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

它会显示是这样的:癌症和隧道

enter image description here

注最大值是7和10分别,所以 如果应用上面的表达式,他们将被隐藏。

让我知道这是否有帮助。

+0

谢谢!你是我的英雄ssrs2008 –