Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server ORDER THEO ngày tháng và giá trị rỗng cuối cùng

smalldatetime có phạm vi đến ngày 6 tháng 6 năm 2079 nên bạn có thể sử dụng

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

Nếu không có hồ sơ hợp pháp sẽ có ngày đó.

Nếu đây không phải là một giả định, bạn muốn dựa vào một tùy chọn mạnh mẽ hơn là sắp xếp trên hai cột.

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

Tuy nhiên, cả hai gợi ý trên đều không thể sử dụng một chỉ mục để tránh sắp xếp và đưa ra các kế hoạch giống nhau.

Một khả năng khác nếu một chỉ mục như vậy tồn tại là

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. SQL Server đệ quy tự tham gia

  2. Làm cách nào để kích hoạt MSDTC trên SQL Server?

  3. Không thể tạo phiên bản của nhà cung cấp OLE DB Microsoft.Jet.OLEDB.4.0 cho máy chủ được liên kết rỗng

  4. Cách tốt nhất để nhận Hướng dẫn PK của hàng đã chèn

  5. SQL - Trừ một giá trị cạn kiệt khỏi các hàng