1
什麼是運行代碼的開始和結束日期列表?
我知道這是類似於其他差距和島嶼問題已經在這裏,但我還沒有發現由followingtwo問題複雜化的問題:
- A碼可以開始和結束不止一次
- A碼可以與直到幷包括間隙6天(這將在下面進一步解釋)
數據
運行這是T-SQL的數據,我有:
Table
Code | Date
--------------------------------
1000 | 01-31-2015
1000 | 02-01-2015
1000 | 02-02-2015
1000 | 02-03-2015
1000 | 02-09-2015
1000 | 02-10-2015
1000 | 02-17-2015
1001 | 02-01-2015
1001 | 02-02-2015
1001 | 02-04-2015
1001 | 02-05-2015
1001 | 02-12-2015
1001 | 02-19-2015
理想的解決方案
我想我的SQL查詢返回的是:
Code | StartDate | EndDate | Run
--------------------------------------------------------
1000 | 01-31-2015 | 02-10-2015 | 1
1000 | 02-17-2015 | 02-17-2015 | 2
1001 | 02-01-2015 | 02-05-2015 | 3
1001 | 02-12-2015 | 02-12-2015 | 4
1001 | 02-19-2015 | 02-19-2015 | 5
爲了進一步解釋,我們舉一個例子:
代碼1000從2015年1月31日到2015年3月2日連續運行。從2015年9月2日至2015年2月2日,有6天的差距。由於6天的差距可以接受,該運行的開始日期定義爲01-31-2015,結束日期定爲02-03-2015。
但是,相比之下,代碼1001運行於2015年2月2日和2015年2月19日。由於它們之間有7天的差距,它們不被認爲是在同一運行中。
所有幫助非常感謝,所以提前謝謝你!
我編輯的代碼行2:ROW_NUMBER()OVER(ORDER BY mediaCode)的運行得到一個唯一的標識符的每一行但除此之外,這是完美的!謝謝@戈登! – Bhavik