2017-03-08 7 views
1

Meine tablix Berichterstattung hat folgende SpaltenBedingtes tablix in SSRS Gruppierung

Country, City, College, totalstudent,passedstudent,failedstudent 

Ich habe einen Parameter "GroupBy" mit den Werten "Land/Stadt/Hochschule". Wenn ich also einen der Parameter auswähle, sollte mein Tablix nach diesem Parameter gruppiert werden und nur so, dass die Parameterspalte + Summe, bestanden, fehlgeschlagene Spalten

Für z. Wenn Benutzer GroupBy = "City" wählt dann die tablix

City, totalstudent, passedstudent, failedstudent 

Die Werte insgesamt zeigen, erfolgreich oder nicht erfolgreich ist Gesamtsumme in dieser Stadt gruppiert.

Die ähnliche Logik sollte auch auf Land und College angewendet werden.

So weit bin ich in der Lage, die alle Spalten mit Gruppierung nach Land, dann Stadt und dann College gezeigt. (Das ist eine der einfachen ssrs Gruppierung)

(Mein Bedürfnis ist nur die eine Anwendung Gruppierung basierend auf Parameter und nur zeigen, dass bestimmte Spalten)

Anmerkung: Ich habe eine rohe Datenmenge, die alle diese Werte hat abgerufen Verwendung von Inline-SQL aus meiner SQL-Datenbank. (Dataset1: Land, Stadt, Universität, totalstudent, passedudent, failedstudent)

+0

Hat etwas ähnliches vor einer Weile gemacht. Für meinen sql sende ich Zellen für nicht benötigte Gruppen als leer zurück. Dann versteckte ich im Bericht die Zeile, wenn die Gruppe nach Zelle leer war. Bete, dass du nicht expandieren und kollabieren musst, denn dann musst du es codieren. – Snowlockk

Antwort

2

Sie können Ihre Tabelle nach einem Ausdruck gruppieren. In Ihrer Gruppe Eigenschaften würden Sie so etwas schreiben:

=Switch(Parameters!GroupBy.Value = "City", Fields!City.Value 
    , Parameters!GroupBy.Value = "College", Fields!College.Value 
    , ...) 

Die anderen Spalten sollten nur verwendet werden regelmäßig Sum Funktionen und arbeiten mit jeder Gruppierung können.

+0

Danke Steven, ich habe versucht, Ihre Ansatzgruppierung auf der SSRS-Datenmenge, die für mich sehr langsam scheint, da ich die rohen Datensätze alle Spalten von sql bekomme und es dauert etwa 10 Sekunden, um die gruppierten Daten zu laden. Da ich auch für jede Spalte sortieren muss, ist es extrem langsam. Also, ich verlagerte die Logik der Gruppierung in Richtung SQL – Aarush

-1

Wenn Sie Ihr Dataset erstellen, schreiben Sie Ihre Abfrage nicht direkt in das Feld, sondern verwenden Sie expression.

="SELECT " + Parameters!GroupBy.Value + ", passedstudent, failedstudent 
    FROM Table GROUP BY " + Parameters!GroupBy.Value 

Ihre "passedstudent" und "failedstudent" werden einige Aggregation, entweder COUNT oder SUM, hängt von Ihrem Fall.

+0

Verwendet ähnliches Konzept, aber nicht auf Berichtsebene, sondern SQL-Ebene, indem Groupby Variable an meine Abfrage übergeben – Aarush

0

habe ich versucht, die unterschiedlichen Ansätze (I durch den letzten/dritten Ansatz ging)

  1. mehrere tablix für die verschiedenen Gruppierungsbedingungen und verwendet, um die Parameter die korrekte tablix im Bericht Pitfall aus-/eingeblendet : Es ist furchtbar langsam, da ich 4 verschiedene Gruppierungsbedingungen habe und 4 verschiedene Tablix einlege.

  2. Verwenden Sie das dynamische Gruppierungskonzept wie unter (http://www.advancedssrs.com/2014/01/how-can-i-use-dynamic-grouping.html) beschrieben, das ist gut. Aber es war nicht für meine Situation geeignet, da es auch vergleichsweise langsam war, während ich versuche, die Spalten in SSRS zu sortieren. (Ich brauche die Sortierfunktion in allen Spalten)

  3. Erstellt einen neuen Parameter (groupby), der das Szenario von Registerkarten simuliert. Wenn der Benutzer einen der Werte (Land/Stadt/Hochschule) auswählt, gruppiere ich mein SQL-Ergebnis basierend auf diesem groupby Parameterwert, indem ich bedingte Gruppierungsanweisungen verwende und das Ergebnis an SSRS zurücksende.


    SELECT 
    CASE WHEN @GroupBy = 'Country' THEN CountryName 
    WHEN @GroupBy = 'City' THEN CityName 
    WHEN @GroupBy = 'College' THEN CollegeName 
    END AS GroupTitle, 
    SUM(totals) AS totalstudent, 
    SUM(passes) AS passedstudent, 
    SUM(fails) AS failedstudent, 
    FROM #temp 
    GROUP BY CASE WHEN @GroupBy = 'Country' THEN CountryName 
    WHEN @GroupBy = 'City' THEN CityName 
    WHEN @GroupBy = 'College' THEN CollegeName 
    END 
    ORDER BY 1 
    DROP TABLE #temp 

Nun verwende ich die GroupTitle in meiner ersten Spalte und der Rest der aggregierten Werte in den verbleibenden Spalten in einer einzigen tablix. Die Ausgabe sieht wie folgt aus: SSRS Report sample output

Verwandte Themen