查找重叠日期并将其排除在SQL Server中?

时间:2018-05-15 02:21:47

标签: sql sql-server

这是我的表'map'的一部分: 例如,比较A和D行。 A日期范围完全在D日期范围内,因此我们希望消除该行。 (我不想删除这一行,但我的查询结果不应该显示该行)。

sed id      code    startdate   enddate
101 1019    A       2002-12-02  2009-11-17 
101 1019    B       1986-01-02  2009-11-04 
101 1019    C       2009-07-01  2009-11-17 
101 1019    C       2002-12-02  2009-06-30 
101 1019    D       1986-01-03  2009-11-17 
101 1019    E       2007-10-15  2009-11-17 
101 1019    E       1992-01-31  1999-08-30 
101 1019    F       2007-11-26  2009-11-05 
101 1019    F       2007-09-05  2007-11-22 
101 1019    F       2007-07-06  2007-09-03 

1 个答案:

答案 0 :(得分:0)

这似乎可以回答你的问题:

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.startdate < t.startdate and t2.enddate >= t.enddate and
                        t2.sed = t.sed and t2.id = t.id and t2.code <> t.code
                 );