考虑一个简化的表 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)