我有一組具有開始和結束值的「事件」數據。數據可能會重疊或被端對端對接(最終值或一條記錄匹配另一個的起始值)。我想找到一個很好的解決方案來查找事件的「島嶼」,即查找發生事件的跨度。下面的輸入和預期輸出表應該有助於可視化。使用SQL查找連續的事件數據段(間隙和島嶼)
要添加額外的複雜性,我們可能要考慮的公差(即一個事件在1.15結束和另一個開始在1.2可能被視爲一個連續的事件。
我試圖通過識別所有的來解決這個問題開始事件(那些事件沒有從x事件結束開始,然後是結束事件,然後根據開始事件的起始值加上其下一個結束事件值來構建跨度)
這不起作用,因爲生產數據太「真實」,並且總是存在處理不合適的附帶案例。*
我目前的想法是,實際計算「差距」可能是理想的,然後反轉這些差距以找到連續的事件跨度。
*請注意,實際生產數據非常大且非常複雜。有數百個很多事件由很小的碎片組成。
你的SQL Server 2012或更高版本上? 2012年的窗口功能有很多改進可以幫助你。 – 2015-03-03 10:24:13
我很抱歉地說,這仍然是在2005年運行。 – 2015-03-03 10:44:29