sql >> Database >  >> RDS >> Sqlserver

SQL Server ORDER BY-datum en nulls duren

smalldatetime heeft een bereik tot 6 juni 2079, dus je kunt

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

Als er geen legitieme gegevens zijn die die datum hebben.

Als dit geen aanname is die u graag wilt vertrouwen op een meer robuuste optie, is sorteren op twee kolommen.

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

Beide bovenstaande suggesties zijn echter niet in staat om een ​​index te gebruiken om een ​​sortering te vermijden en geven gelijkaardige plannen.

Een andere mogelijkheid als een dergelijke index bestaat is

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. Hoe u de huidige weekgegevens in MySQL kunt krijgen

  2. Waarde van weergave-item invullen bij query in Oracle Forms

  3. Vind de echte kolomnaam van een alias die in een weergave wordt gebruikt?

  4. Datetime gelijk aan of groter dan vandaag in MySQL