2016-06-13 12 views
0

Ich habe einen Parameter in meinem Bericht (Report Builder 3.0) namens REPORT_FILTER. Dieser Parameter hat 4 verfügbare Werte. Die Labels sind (1) Home Group, (2) Home Branch, (3) Andere Group und (4) Other Branch. Die entsprechenden Werte sind 1, 2, 3 und 4.Report Builder 3.0 Filtern nach verschiedenen Spalten

Die SQL, die zum Ausführen dieses Berichts verwendet wird, fügt der Spalte "Filter1" für die Home-Gruppe "1" und "2" der Spalte "Filter1" hinzu Andere Gruppe.

Die zum Ausführen dieses Berichts verwendete SQL fügt der Spalte "Filter2" für den Stammzweig "1" und "2" der Spalte "Filter2" für den anderen Zweig hinzu.

Wenn SQL ausgeführt wird, bekomme ich 1 oder 2 in den Spalten "Filter 1" und "Filter 2". Diese Daten sind genau das, was ich erwarte.

Was ich tun möchte, ist einen Filter zum Bericht hinzufügen, so dass der Benutzer nur die Datensätze erhält, die sie wollen. Worum ich mich ärgere ist, dass die Filter zwei Spalten haben müssen und ich bin mir nicht sicher, wie ich das machen soll.

Zum Beispiel, wenn der Benutzer auswählt, Home Group (Wert = 1), sollte der Bericht nur die Datensätze zurück, die ein 1 in der Filter1 Spalte

Wenn der Benutzer wählt, anderer Zweig (Wert = 4), sollte der Bericht nur die Datensätze, die eine 2 in der Filter2 Spalte haben

Dieser Bericht dauert bereits eine Weile, um einige Minuten zu laufen, so (ich denke) Ich würde es vorziehen, die Ergebnisse in Report Builder statt mit filtern die SQL. Wenn ich es mit SQL machen könnte, wäre das akzeptabel. Ich habe versucht, SQL zu schreiben, um dies zu tun, aber war nicht in der Lage, als auch erfolgreich zu sein.

Irgendwelche Vorschläge würden geschätzt. Danke für die Hilfe.

Antwort

0

Ziemlich einfach in SQL zu tun, fügen Sie einfach diese WHERE-Bedingung:

WHERE 
CASE 
WHEN 
    @REPORT_FILTER = 4 and Filter2 = 2 then 1 
WHEN 
    @REPORT_FILTER = 3 and Filter2 = 1 then 1 
WHEN 
    @REPORT_FILTER = 2 and Filter1 = 2 then 1 
WHEN 
    @REPORT_FILTER = 1 and Filter1 = 1 then 1 
ELSE 0 
END = 1 

Und in ähnlicher Weise in SSRS, nur einen Filter verwenden, die Expression von

(Parameters!REPORT_FILTER.Value = 4 And Fields!Filter2.Value = 2) 
OR 
(Parameters!REPORT_FILTER.Value = 3 And Fields!Filter2.Value = 1) 
OR 
(Parameters!REPORT_FILTER.Value = 2 And Fields!Filter1.Value = 2) 
OR 
(Parameters!REPORT_FILTER.Value = 1 And Fields!Filter1.Value = 1) 

den Ausdruck Typ Boolean Set und Set der Vergleichswert zu True.

enter image description here

+0

..... Danke für die Vorschläge. Ich werde sie heute Nachmittag versuchen. Ich schätze wirklich die ausführliche Information – Shaves

+0

@Kyle_Hale .... Thanks für die Information – Shaves

+0

@Kyle_Hale ....... Ich füge einen anderen Filter hinzu, der "alles" genannt wird. Wie füge ich das dem SSRS-Beispiel hinzu. Der Wert ist 5 und sollte alle Datensätze enthalten. Ich habe versucht "OR (Parameter! REPORT_FILTER.Value = 5 Und Felder! Filter1.Value = 1 Und Felder! Filter1.Value = 2). Danke für die Hilfe – Shaves