我有一组日期范围,包括部分和完全重叠的日期,如下所示:
UserID StartDate EndDate
====== ========== ==========
1 2011-01-01 2011-01-02 <- A
1 2011-01-01 2011-01-10 <- A
1 2011-01-08 2011-02-15 <- A
1 2011-02-20 2011-03-10 <- B
2 2011-01-01 2011-01-20 <- C
2 2011-01-15 2011-01-25 <- C
Run Code Online (Sandbox Code Playgroud)
使用T-SQL,我想为每个用户创建一组新的数据,消除重叠数据,扩展范围并在需要时删除冗余数据,结果如下所示:
UserID StartDate EndDate
====== ========== ==========
1 2011-01-01 2011-02-15 ('A', three rows combined, extending the range)
1 2011-02-20 2011-03-10 ('B', no change, no overlaps here)
2 2011-01-01 2011-01-25 ('C', two rows combined)
Run Code Online (Sandbox Code Playgroud)
如果需要游标很好,但如果没有它就可以做得更好.