TableA (
id int,
match1 char,
match2 char,
startdate datetime,
enddate,
status char
)
样本数据:
id match1 match2 startdate enddate Status
1 AAA BBB 2006-01-01 2007-01-01
2 AAA BBB 2006-12-12 2008-01-01
3 AAA BBB 2008-01-01 2012-02-02
4 AAA BBB 2002-01-01 2004-01-01
5 DDD EEE 2009-01-01 2012-01-01
6 DDD EEE 2011-01-01 2020-01-01
7 DDD EEE 2013-01-01 2015-01-01
8 DDD EFG 2009-01-01 2012-01-01
我必须在匹配时status
填充,日期 - 开始和结束 - 相互重叠。'FAIL'
tableA
match1, match2
何时ID = 2
,生效日期2006-12-12
为2008-01-01
,重叠ID = 1
。所以,ID = 2
得到'FAIL'
. 也是如此ID = 6
。
预期结果:
id match1 match2 startdate enddate Status
1 AAA BBB 2006-01-01 2007-01-01 NULL
2 AAA BBB 2006-12-12 2008-01-01 FAIL
3 AAA BBB 2008-01-01 2012-02-02 NULL
4 AAA BBB 2002-01-01 2004-01-01 NULL
5 DDD EEE 2009-01-01 2012-01-01 NULL
6 DDD EEE 2011-01-01 2020-01-01 FAIL
7 DDD EEE 2013-01-01 2015-01-01 NULL
8 DDD EFG 2009-01-01 2012-01-01 NULL (because It has different match2)
此外,我们保留了相同 match1 和 match2 的第一条记录,并且使新传入的重叠记录失败。