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

SQL Server ORDER BY data i wartości null trwają

smalldatetime ma zasięg do 6 czerwca 2079 r., więc możesz używać

ORDER BY ISNULL(Next_Contact_Date, '2079-06-05T23:59:00')

Jeśli żadne legalne zapisy nie będą miały tej daty.

Jeśli nie jest to założenie, które masz ochotę polegać na bardziej niezawodnej opcji, jest sortowanie w dwóch kolumnach.

ORDER BY CASE WHEN Next_Contact_Date IS NULL THEN 1 ELSE 0 END, Next_Contact_Date

Obie powyższe sugestie nie są w stanie użyć indeksu, aby uniknąć sortowania i dać podobne plany.

Inną możliwością, jeśli taki indeks istnieje, jest

SELECT 1 AS Grp, Next_Contact_Date 
FROM T 
WHERE Next_Contact_Date IS NOT NULL
UNION ALL
SELECT 2 AS Grp, Next_Contact_Date 
FROM T 
WHERE Next_Contact_Date IS NULL
ORDER BY Grp, Next_Contact_Date



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Microsoft Access a SQL Server

  2. Zamiast wyzwalacza w SQL Server traci SCOPE_IDENTITY?

  3. Usuń wszystkie tabele, których nazwy zaczynają się od określonego ciągu

  4. Statystyki użycia indeksu SQL Server

  5. Funkcje matematyczne programu SQL Server (pełna lista)