小编chr*_*ine的帖子

对于重叠的日期范围按天分组最有效的方法是什么(SQL Server 2008)?

考虑一个简化的表 T1,如下所示:

CREATE TABLE dbo.T1 (
    id        INTEGER       NOT NULL
    ,measure  NUMERIC(15,2) NOT NULL
    ,begin_dt DATE          NOT NULL
    ,end_dt   DATE          NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

假设约束/业务逻辑确保虽然每个 id 可以有多个记录,但单个 id 没有重叠的日期范围,并且单个 id 没有日期范围间隙。例如,

id   | measure |  begin_dt  |   end_dt
-----------------------------------------
1    |  100.00 | 2012-05-07 | 2012-05-30
1    |  200.00 | 2012-05-31 | 2013-10-11
1    |   50.00 | 2013-10-12 | 2013-10-13
1    |    0.00 | 2013-10-14 | 9999-12-31
2    | 1234.56 | 2002-02-25 | 9999-12-31
3    |    9.87 | 2014-01-31 | 2014-02-15 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server query-optimization sql-server-2008

5
推荐指数
1
解决办法
499
查看次数