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)