MS SQL Reporting: In einer Matrix logisch sortieren

Werte in einer Mssql-Report-Matrix logisch zu Sortieren kann einen zum Wahnsinn treiben. In einer SQL-Abfrage richtig zu sortieren reicht nicht, da der Report nochmal „nacharbeitet“, also die Reihenfolge versaut. Möchte ich etwa Mitarbeiter-Anwesenheitszahlen in einer Firma nach Früh-, Spät- und Nachtschicht sortieren, wird die Spätschicht nach Alphabet immer als letztes kommen. Oft hilft auch das Wirrwar der Sortierungen im Dataset, Report-Dataset und Spalten und Gesamtmatrix-Sortierungs-Wirrwar nicht weiter. Die Lösung kann sein, ein alpabetisches Element einzufügen, nach dem sortiert wird, innerhalb der Gruppe.

SELECT
        COUNT(EmpId) AS EmpQty,
        (SELECT        CASE D_SHIFT_TYPE.SHIFT_TYPE_ID WHEN 1 THEN 'a' WHEN 2 THEN 'b' WHEN 3 THEN 'c' ELSE '' END AS Expr1) AS X
FROM
        EmpState

Dann kann man zuverlässig sortieren.

Sortieren

Wichtig ist, dass nach dem zu sortierenden Kriterium auch zusätzlich gruppiert wird, sonst zeigt dieser „Trick“ keinen Effekt.

Sortieren

Am Ende hat man einen Bericht, in dem die Schichten in der richtigen Reihenfolge sind.