Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zamów według różnych typów w CASE

Instrukcja CASE musi rozwiązać tylko jeden typ danych. Dzieje się tak niezależnie od tego, że wiesz, że @orderby wybierze tylko jedną gałąź i będzie to konkretny typ danych.

Możesz użyć czegoś takiego, co byłoby niezgrabne, ale zadziała.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niska wydajność SqlDataReader

  2. SQL Server Konkatenacja GROUP BY

  3. Jak zaimportować plik JSON do tabeli serwera SQL?

  4. Jak przekonwertować ciąg na datę/godzinę w SQL Server za pomocą funkcji CONVERT()

  5. 5 nawyków monitorowania baz danych w przypadku udanych administratorów baz danych