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

Phát hiện các phạm vi ngày liên tiếp bằng SQL

Không cần tham gia hoặc CTE đệ quy. Giải pháp khoảng trống và đảo tiêu chuẩn là nhóm theo (giá trị trừ đi số hàng), vì điều đó là bất biến trong một chuỗi liên tiếp. Ngày bắt đầu và ngày kết thúc chỉ là MIN () và MAX () của nhóm.

WITH t AS (
  SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
  FROM @d
  GROUP BY InfoDate
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa số, số thực và số thập phân trong SQL Server

  2. Làm cách nào để truy xuất các bản ghi trong 30 phút qua trong MS SQL?

  3. Truy vấn con sử dụng Tồn tại 1 hoặc Tồn tại *

  4. Một câu lệnh SQL Server duy nhất có phải là nguyên tử và nhất quán không?

  5. Cách sử dụng thuật sĩ nhập / xuất trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 104