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

Một truy vấn sql duy nhất có thể xử lý cả phạm vi ngày rỗng hoặc có giá trị trong máy chủ sql

WITH    limits AS
        (
        SELECT  COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
        FROM    mytable
        )
SELECT  m.*
FROM    limits
JOIN    mytable m
ON      mydate BETWEEN startDate AND endDate

Điều này sẽ hiệu quả nhất nếu có một chỉ mục trên mydate , vì điều kiện này có thể phân tích được và sẽ sử dụng Index Seek .

Nếu không có chỉ mục, hãy sử dụng IFNULL cấu trúc do người khác đề xuất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Việc kết hợp giữa các lượt xem và bảng có thể ảnh hưởng đến hiệu suất không?

  2. Làm cách nào để tải tệp XML vào cơ sở dữ liệu bằng gói SSIS?

  3. Tại sao ép kiểu / chuyển đổi từ int trả về dấu hoa thị

  4. CAST và IsNumeric

  5. Tại sao tôi không thể sử dụng bí danh trong câu lệnh DELETE?