Wenn man Benutzern die Möglichkeit geben will im Report Manager direkt zu sortieren ohne erst umständlich einen Excel-Export machen zu müssen stößt man an die Grenzen der Flexibilität von Reporting Services.
Lösung wäre zum Beispiel folgendes:
Man erstellt eine Tabellenwertfunktion und übergibt das Orderby als Parameter. Der Aufruf sieht dann ungefähr so aus:
SELECT Kundennummer, Name, land, Umsatz
FROM dbo.tf_kundenumsatz(@datum_von, @datum_bis, @Land,@top, @orderby) AS tf_umsatz
Will man die Tabellenwertfunktion auch ausserhalb des SSRS aufrufen kann man dem Paramater in der Funktion auch einen Default wert zuweisen:
@Orderby as varchar(20) = 'Wertstellung'
der Aufruf lautut dann: dbo.tf_kundenumsatz(@datum_von, @datum_bis, @Land,@top,
DEFAULT)
Der Orderby Befehl sieht dann in etwas so aus:
case when lower(@orderby) = 'wertstellung' Then wertstellung ELSE NULL END desc,
case when lower(@orderby) = 'Kundennummer' Then Kundennummer ELSE NULL END asc,
case when lower(@orderby) = 'Land Then Land ELSE NULL END asc
Die Parameter Zuweisung und das Endergebnis sieht in meinen Fall so aus: