Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server 2008:Seltsamer Fehler in gespeicherter Prozedur

Sie können keine Variable in der order by verwenden Klausel. Stattdessen müssen Sie etwas tun wie:

order by (case when @groupBy = 'VRNOA' then VRNOA
               . . .
          end)

Seien Sie jedoch vorsichtig, denn wenn die Spalten unterschiedlichen Typs sind, können entweder unerwartete Dinge passieren oder ein weiterer Fehler auftreten. (Es gibt eine Alternative zur Verwendung von dynamischem SQL, aber ich würde das nicht empfehlen.)

Auch der Name @groupby ist etwas irreführend. „Gruppierung“ ist ein SQL-Begriff, der „Aggregation“ entspricht. Wäre nicht @OrderBy oder @SortBy angemessener sein?