sql >> Databáze >  >> RDS >> Sqlserver

SQL Server ORDER BY datum a poslední hodnoty null

smalldatetime má rozsah do 6. června 2079, takže můžete použít

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

Pokud žádné legitimní záznamy nebudou mít toto datum.

Pokud se nejedná o předpoklad, který chcete spoléhat na robustnější možnost, je řazení ve dvou sloupcích.

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

Oba výše uvedené návrhy však nemohou použít index, aby se vyhnuly řazení a poskytly podobně vypadající plány.

Další možností, pokud takový index existuje, je

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. Jak klasifikovat, najít a maskovat PII v databázích…

  2. Jak přejmenovat název sloupce v SQL?

  3. Jak COMPRESS() funguje v MariaDB

  4. SQL Server:Databáze se zasekla ve stavu Obnovování