【发布时间】:2011-08-10 17:41:05
【问题描述】:
我有一个表,其中包含数百万行,要求日期跨度与某个“合同编号”和“服务代码”不重叠。通常有 2-4 行的日期重叠,必须合并到一条记录中。不重叠的记录不应合并,应保持间隙。
ContractNumber ServiceCode StartDate EndDate
1111111 AFL 2010-01-01 2010-12-31
1111111 AFL 2011-01-01 2011-12-31
1111111 AFL 2011-04-01 2012-03-31
1111111 AFL 2011-04-01 2012-06-30
1111111 AFL 2013-01-01 2013-12-31
这些必须组合成:
ContractNumber ServiceCode StartDate EndDate
1111111 AFL 2010-01-01 2010-12-31 (remains the same)
1111111 AFL 2011-01-01 2012-06-30 (merged)
1111111 AFL 2013-01-01 2013-12-31 (gap maintained)
另外,我已经看过这个问题:Eliminate and reduce overlapping date ranges。它在数据子集下工作,但是一旦我在我拥有的所有数据上释放它,它就真的很慢。我需要在几分钟内运行数百万行的东西。有什么想法吗?
【问题讨论】:
标签: sql-server sql-server-2008