5
我有如下表:遞歸CTE - 鞏固開始和結束日期
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
,我試圖實現以下目的,從而以相同的狀態連續行被從併合併成一排與有效日期範圍:
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
我可以得到一個遞歸CTE輸出基於下一行的正確effective_to_datetime,但我有麻煩的合併範圍。
代碼,以生成樣本數據:
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')
哦,我不想使用遊標或循環,因爲計劃是在視圖中使用這個邏輯。 – shakedown7 2011-12-16 15:37:36
如果您沒有日期條目,該怎麼辦?這應該被視爲序列中的差距嗎?例如假設'('Active','2011-01-02')行不在那裏? – 2011-12-16 15:58:43