Tôi có bảng sau:đệ quy CTE - củng cố bắt đầu và ngày kết thúc
row_num customer_status effective_from_datetime
------- ------------------ -----------------------
1 Active 2011-01-01
2 Active 2011-01-02
3 Active 2011-01-03
4 Suspended 2011-01-04
5 Suspended 2011-01-05
6 Active 2011-01-06
Và đang cố gắng để đạt được các kết quả sau đó hàng liên tiếp với tình trạng tương tự được sáp nhập vào một hàng với một cách hiệu quả từ và đến phạm vi ngày:
customer_status effective_from_datetime effective_to_datetime
--------------- ----------------------- ---------------------
Active 2011-01-01 2011-01-04
Suspended 2011-01-04 2011-01-06
Active 2011-01-06 NULL
Tôi có thể nhận CTE đệ quy để xuất đúng ngày_to_datetime dựa trên hàng tiếp theo nhưng gặp sự cố khi hợp nhất phạm vi.
Mã để tạo ra dữ liệu mẫu:
CREATE TABLE #temp
(
row_num INT IDENTITY(1,1),
customer_status VARCHAR(10),
effective_from_datetime DATE
)
INSERT INTO #temp
VALUES
('Active','2011-01-01')
,('Active','2011-01-02')
,('Active','2011-01-03')
,('Suspended','2011-01-04')
,('Suspended','2011-01-05')
,('Active','2011-01-06')
Ồ, và tôi không muốn sử dụng con trỏ hoặc vòng lặp vì kế hoạch là sử dụng logic này trong chế độ xem. – shakedown7
Điều gì xảy ra nếu bạn không có mục nhập cho một ngày? Điều đó có nên được coi là một khoảng trống trong chuỗi không? ví dụ. giả sử dòng '('Hoạt động', '2011-01-02')' không có ở đó? –