Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изявление CASE за клауза за подреждане по с множество колони и сортиране Desc/Asc

Можете да напишете няколко случая, дори ако всички те имат едно и също състояние.

ORDER BY 
    CASE @OrderByColumn WHEN 1 THEN Forename END DESC, 
    CASE @OrderByColumn WHEN 1 THEN Date END, 
    CASE @OrderByColumn WHEN 1 THEN Location END, 
    CASE @OrderByColumn WHEN 2 THEN Surname END ASC 

Всъщност вие не указвате колона, по която да сортирате, а израз.

Операторът case връща нула, ако условието не е изпълнено, така че всъщност означава:

CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END

Така че, ако @OrderByColumn не е 1, операторът винаги връща NULL. Между другото, това не го изключва от сортирането, но поставя всички тези редове заедно в резултата, което прави „Фамилно име“ решаващото сортиране в тази група редове.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция на SQL Server за получаване на родител от най-високо ниво в йерархията

  2. Как да архивирате задания на SQL Server Agent?

  3. Грешка при вмъкване на стойност, съдържаща апостроф

  4. 5 Навици за наблюдение на база данни на успешните администратори на база данни

  5. Създаване на таблица с помощта на явен оператор create table срещу select into