2017-05-19 4 views
0

Ich habe einen SSRS-Bericht, der 5 Berichte zu einem kombiniert. Jeder Bericht wird aus einer anderen gespeicherten Prozedur befüllt. Die erste Seite ist eine Zusammenfassung, die aus jedem Bericht eine Datensatzanzahl bereitstellen soll. Ich habe Felder in der gespeicherten Prozedur erstellt, die die Zählungen für jeden einzelnen Bericht bereitstellt: phycount und nonphyscount. Ich versuche, eine Tabelle ähnlich wie diese zu erstellen:Ich versuche, Datensätze in SSRS aus verschiedenen Datensätzen zu zählen

enter image description here

Aktive kommt aus einem Datensatz, Initial von einem anderen kommt, Recert von einem anderen kommt, usw.

Ich habe um gespielt mit dem Lookup und LookupSet, aber ich bekomme nur Fehler, und ich bin mir nicht sicher, ob das sogar die richtige Richtung ist.

Weiß jemand, wie man das macht?

+0

Der Eingang nur ein Wert nehme ich an? Haben Sie versucht, eine Prozedur zu erstellen, um alle Ihre Zählungen auszuführen und diese dann als Dataset zurückzugeben? –

+0

Ich hatte darüber nachgedacht, aber ich denke es wird noch schwieriger. Die gespeicherten Procs geben die Anzahl als Feld zurück, aber diese Felder werden nicht in eine Tabelle eingegeben (die ich nicht erstellen darf). Ich müsste einen proc erstellen, der alle Abfragen von den 5 anderen Procs ausführt, und das würde wirklich die Laufzeit des Berichts erhöhen. – jackstraw22

+0

Sorry ich missverstanden, ich dachte du hättest das als erste Seite des Berichts. Können Sie die Zählungen in einer Tabelle speichern? Ich sehe nicht, wie Sie die Anzahl der anderen Berichte zur Laufzeit abrufen würden, ohne ihre Abfragen auszuführen. –

Antwort

0

Lookup und Lookupset sind mehr für das Abrufen bestimmter Werte aus einem Dataset. Sehr nützlich, aber nicht notwendig für das, was Sie erreichen möchten.

Sie können Aggregatfunktionen SUM und COUNT verwenden, um zu erreichen, was Sie tun möchten. Das Tolle an diesen Funktionen ist, dass Sie IIF-Anweisungen in sie einbetten können.

Ich bin mir nicht sicher, wie Ihre Datensätze aussehen und benannt werden, aber es wäre so etwas sein ...

SUM (IIF (Fields! Type.Value = "PhyCount", 1, 0), "Aktiv")

Die Summenfunktion durchläuft jede Zeile Ihres Datensatzes und addiert die Werte, die Sie übergeben. Die iif-Anweisung überprüft, ob das Typfeld im Dataset "PhyCount" ist. Wenn dies der Fall ist, wird 1 zurückgegeben, wenn nicht 0. Da dies für jede Zeile geschieht, gibt Ihre SUM-Funktion eine Zählung jeder Zeile mit aktivem Status zurück.

edit: "Aktiv" nach der iif-Anweisung gibt den Namen der Datenmenge an.

Erneut bearbeiten: Diese Lösung offenbar nicht funktioniert in SSRS 2008

+0

Ich denke, ich habe es herausgefunden, und wenn ich richtig liege, war es nicht so schlimm. Ich habe eine Tabelle erstellt und dann eine Gruppe hinzugefügt. Für jede Zeilengruppe konnte ich das Zählfeld für jeden Datensatz aufrufen: = Summe (Felder! Arricct.Value, "ds1licensettest") – jackstraw22

+0

@ Lucky - Ich habe deine Lösung versucht, aber ich habe einen Fehler bekommen, dass der scope-Parameter nicht ist gültig für eine Aggregatfunktion. Ich habe es versucht: Summe (IIF (Felder! TypeValue = "phycount", 1, 0), "Aktiv"). Ihre Lösung klingt interessant und ich würde es gerne auch zum Laufen bringen. – jackstraw22

+0

Toll, wenn die einfache Summe für dich großartig funktioniert. Ich liebe es, SSRS dazu zu bringen, Dinge zu tun, die es nicht tun will! Ich habe das gerade getestet und es funktioniert: = SUM (IIF (Felder! Staff_Name.Value = "Blow, Joe", 1, 0), "DataSet1") – Lucky

Verwandte Themen