我的数据如下表所示。
Col1 | Startdate | Enddate
-----------------------
A | D1 | D14
B | D5 | D18
C | D20 | D24
D | D30 | D40
我想得到日期重叠的col1,我可以通过在sql语句中两次引用我的表来获取它。但是,结果集如下所示。
select t1.col1, t2.col1 from table t1, same_table t2
where t1.col1!= t2.col1
and t1.startdate <= t2.enddate
and t1.enddate >= t2.startdate;
Table1.Col1|Table2.col2
-----------------------
A | B
B | A
任何人都可以建议如何过滤掉第一个与第一个重复的记录吗?
答案 0 :(得分:3)
将!=
更改为<
:
select t1.col1, t2.col1
from table t1
join table t2 on t1.col1 < t2.col1
and t1.startdate <= t2.enddate
and t1.enddate >= t2.startdate;
这将过滤掉记录:
Table1.col1 | Table2.col2
-----------------------
B | A
注意:使用显式 ANSI兼容的连接语法,而不是旧式的隐式语法。