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

SQL Server ПОРЪЧАЙ ПО дата и нулевите последни

smalldatetime има обхват до 6 юни 2079 г., така че можете да използвате

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

Ако няма легитимни записи, няма да има тази дата.

Ако това не е предположение, вие искате да разчитате на по-стабилна опция е сортиране по две колони.

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

И двете от горните предложения обаче не могат да използват индекс, за да избегнат сортиране и да дадат подобни изглеждащи планове.

Друга възможност, ако такъв индекс съществува, е

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. Премахнете всички интервали от низ в SQL Server

  2. Внимание на потребителите, работещи с SQL Server 2008 и SQL Server 2008 R2

  3. Получаване на идентификатора на ред, който актуализирах в Sql Server

  4. Разбиране на Always ON Availability Group между Linux-базирани екземпляри на SQL сървър. Част 1

  5. Родната библиотека sqljdbc_auth.dll вече е заредена в друг зареждач на класове