1
僅爲SQL Server 2008尋求優化代碼(因爲Lag
和Lead
函數在SQL Server 2008中不可用)。對於以下要求(最後一個記錄結束日期爲空或不爲空)分層數據所需的cte實現
業務規則是:
結束日期應該開始日期爲下一條規則,否則規則不應該被認爲是連續的,將被視爲一個其他規則系列,如下例所示,由於第四條記錄和第七條記錄規則已被制動,所以有三個系列。
RuleId Name StartDate EndDate
-----------------------------------------------------------
2 TP1 1/1/2015 00.00.00 1/31/2015 00.00.00
2 TP1 1/31/2015 00.00.00 2/28/2015 00.00.00
2 TP1 2/28/2015 00.00.00 3/15/2015 00.00.00
2 TP1 3/18/2015 00.00.00 11/28/2015 00.00.00
2 TP1 11/28/2015 00.00.00 4/30/2016 00.00.00
2 TP1 4/30/2016 00.00.00 10/5/2016 00.00.00
2 TP1 10/25/2016 00.00.00 11/15/2016 00.00.00
2 TP1 11/15/2016 00.00.00 Null
結果應該是以下
2 TP1 1/1/2015 00.00.00 3/15/2015 00.00.00
2 TP1 3/18/2015 00.00.00 10/5/2016 00.00.00
2 TP1 10/25/2016 00.00.00 Null
感謝G8的解決方案,但是,當我試圖測試相同的以下數據範圍內,那麼不考慮第一個記錄 (3,「TP3」,「3/18 (3,'TP3','11/28/2015','4/30/2016'), (3,'TP3','4/30','11/28/2015'), (3,'TP3','10/25/2016','11/15/2016'), (3,'TP3','11/15'/2016',null) 結果開始日期不預期 –
檢查更新的答案 – ughai