sql >> Databáze >  >> RDS >> Sqlserver

Řaďte ​​podle různých typů v CASE

Příkaz CASE se musí rozložit pouze na jeden datový typ. A to bez ohledu na to, že víte, že @orderby vybere pouze jednu větev a bude to konkrétní datový typ.

Můžete použít něco takového, co by bylo neohrabané, ale bude to fungovat.

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


  1. Znovu propojit gridovou infrastrukturu

  2. Vytvoření databáze studentů pomocí Microsoft Access

  3. Uložená procedura, levé spojení mi dává duplicitní řádky, ale chci horní (1) řádek pro každý záznam se stejným ID

  4. Jednoduchý Express program pro dotazování na výsledek