Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server ORDER BY Datum und Nullen zuletzt

smalldatetime hat eine Reichweite bis zum 6. Juni 2079, sodass Sie

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

Wenn keine legitimen Aufzeichnungen dieses Datum haben.

Wenn dies keine Annahme ist, möchten Sie sich auf eine robustere Option verlassen, indem Sie nach zwei Spalten sortieren.

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

Beide oben genannten Vorschläge sind jedoch nicht in der Lage, einen Index zu verwenden, um eine Sortierung zu vermeiden, und geben ähnlich aussehende Pläne.

Eine andere Möglichkeit, falls ein solcher Index existiert, ist

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