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

Sortieren nach und verschiedenen Typen in einem KOFFER

Eine CASE-Anweisung darf nur in einen Datentyp aufgelöst werden. Dies gilt unabhängig davon, dass Sie wissen, dass @orderby nur einen Zweig auswählt und es sich um einen bestimmten Datentyp handelt.

Sie könnten so etwas verwenden, was klobig wäre, aber funktionieren wird.

ORDER BY
CASE @orderBy WHEN 1 THEN received_date -- Last Rx'd message
WHEN 2 THEN 0
WHEN 3 THEN 0
WHEN 4 THEN 0
WHEN 5 THEN ime.[allocated_date] -- Allocated Date
ELSE received_date END,
CASE @orderBy WHEN 1 THEN 0
WHEN 2 THEN message_id -- Message Id
WHEN 3 THEN 0
WHEN 4 THEN 0
WHEN 5 THEN 0
ELSE 0 END,
CASE @orderBy WHEN 1 THEN ''
WHEN 2 THEN ''
WHEN 3 THEN zibmat.short_name -- Message action type
WHEN 4 THEN error_action.short_name -- Status type
WHEN 5 THEN ''
ELSE '' END