sql >> データベース >  >> RDS >> Sqlserver

SQL ServerORDERBYの日付とnullが最後

    smalldatetime 2079年6月6日までの範囲があるため、使用できます

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

    正当な記録にその日付がない場合。

    これが前提ではない場合、より堅牢なオプションに依存するのは2つの列での並べ替えです。

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

    ただし、上記の両方の提案では、インデックスを使用して並べ替えを回避し、同様の外観の計画を立てることはできません。

    そのようなインデックスが存在する場合のもう1つの可能性は

    です。
    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. インデックスのDOとDONT

    2. SQLServer2017の概要

    3. SQLServerへのファイルの保存

    4. WAMP/MySQLエラーが正しい言語ではありません