相关疑难解决方法(0)

消除并减少重叠日期范围

我有一组日期范围,包括部分和完全重叠的日期,如下所示:

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)

如果需要游标很好,但如果没有它就可以做得更好.

sql t-sql sql-server stored-procedures sql-server-2005

10
推荐指数
1
解决办法
5643
查看次数