Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server ORDER BY tanggal dan nol terakhir

smalldatetime memiliki jangkauan hingga 6 Juni 2079 sehingga Anda dapat menggunakan

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

Jika tidak ada catatan yang sah akan memiliki tanggal tersebut.

Jika ini bukan asumsi yang Anda suka mengandalkan opsi yang lebih kuat adalah menyortir pada dua kolom.

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

Kedua saran di atas tidak dapat menggunakan indeks untuk menghindari pengurutan dan memberikan rencana yang tampak serupa.

Satu kemungkinan lain jika indeks seperti itu ada adalah

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana SCHEMA_NAME() Bekerja di SQL Server

  2. Berbicara Tentang Kemacetan Kinerja SQL Server

  3. Buat UDF Terikat Skema di SQL Server

  4. Versi SQL Server yang digunakan tidak mendukung tipe data datetime2?

  5. Fungsi IndexOf di T-SQL