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.
Wichtig ist, dass nach dem zu sortierenden Kriterium auch zusätzlich gruppiert wird, sonst zeigt dieser „Trick“ keinen Effekt.
Am Ende hat man einen Bericht, in dem die Schichten in der richtigen Reihenfolge sind.