2016-04-04 4 views
1

Ich habe eine Matrix in ssrs2008 wie unten zu filtern:Wie Aggregatfunktion verwenden, einen Datensatz in SSRS 2008

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

ComplatedVolume Wert wird durch einen spezifischen Ausdruck kommende <<expr>>, der gleich ist: [Max(CVolume)]

Diese Matrix wird von einer gespeicherten Prozedur gefüllt, die ich wenn möglich nicht ändern soll. Was ich tun muss, ist, dass die Daten, deren CompletedVolume < = 50 ist, nicht angezeigt werden. Ich habe versucht, Tablix-Eigenschaften zu gehen und einen Filter wie [Max(Q9Volume)] >= 50 hinzuzufügen, aber wenn ich versuche, den Bericht auszuführen, sagt er, dass aggregate functions cannot be used in dataset filters or data region filters. Wie kann ich das beheben so einfach wie möglich?

Beachten Sie, dass das Hinzufügen einer Where-Klausel in der SQL-Abfrage dieses Problem nicht lösen würde, da viele andere Tabellen denselben SP verwenden und die Daten CompletedVolume < = 50 benötigen. Jede Hilfe wäre willkommen.

EDIT: Ich versuche, die maximale (Q9Volume) Wert auf SP, aber etwas passiert, das ich noch nie zuvor gesehen habe. Die Abfrage ist wie:

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

Interessant ist dies gibt es einige Spalten ich sehe, dass nicht von keinem der beiden Ergebnissen1/results2 enthalten ist, noch Prozeduren Tabellen, wenn ich die Abfrage ausführen. Zum Beispiel gibt es keine Spalte wie Q9Volume in den Tabellen (result1, result2 und procedures), aber wenn ich die Abfrage ausführe, sehe ich die Spalten auf der Ausgabe! Wie ist das möglich?

+0

Haben Sie versucht: 'where CompletedValume> = 50'? Ich sehe nicht, warum ein Aggregat notwendig wäre. –

+0

@GordonLinoff, OP berechnet CompletedVolume mit einem Aggregationsausdruck auf SSRS. Was Sie vorgeschlagen haben, könnte mit der 'HAVING'-Klausel in der SP-Abfrage funktionieren. –

+1

Verwenden Sie 'Q9Volume> = 50' – JamieD77

Antwort

2

Sie die Row versteckte Eigenschaft auf True gesetzt, wenn [Max(CVolume)] kleiner oder gleich ist als 50.

Wählen Sie die Zeile und gehen Sichtbarkeit

enter image description here

Wählen Show zu Zeile oder ausblenden basierend auf ein Ausdruck Option und verwenden Sie diesen Ausdruck:

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

Es wird so etwas wie diese zeigen:

enter image description here

Hinweis Maximalwert für Krebs und Tunnel sind 7 bzw. 10, so werden sie ausgeblendet werden, wenn Sie den obigen Ausdruck anwenden.

Lassen Sie mich wissen, ob dies hilft.

+0

Danke! Du bist mein Held für ssrs2008 –