sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server ORDER BY datum och nollvärden sist

smalldatetime har räckvidd upp till 6 juni 2079 så att du kan använda

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

Om inga legitima poster kommer att ha det datumet.

Om detta inte är ett antagande som du vill lita på ett mer robust alternativ är att sortera på två kolumner.

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

Båda förslagen ovan kan dock inte använda ett index för att undvika en sortering och ge liknande planer.

En annan möjlighet om ett sådant index finns är

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. Java Oracle localhost anslutningsfel (ORA-12505)

  2. MySQL skapar syntax för lagrad procedur med avgränsare

  3. En guide till Pgpool för PostgreSQL:Del ett

  4. MySQL på Azure Performance Benchmark – ScaleGrid vs. Azure Database