我有一张表格,其中包含候选人培训课程的开始和结束日期,需要通过表格检查候选人以前的记录结束日期是否在当前记录开始日期之前。
换句话说,我需要检查候选人培训记录是否重叠,如果他们这样做,我需要能够将不良记录发送到另一个表。
我在这里添加了一个示例,其中所有日期都不正确,因为所有结束日期都在下一个记录开始日期之后。
我尝试过while循环和游标,但是我无法看到一种方法来存储一个记录中的值,同时继续下一个记录以进行比较。 感谢。
PERS_ID PERS_TYPE_SD PERS_TYPE_ED
6444 2006-08-01 00:00:00.000 2018-07-29 00:00:00.000
6444 2009-08-01 00:00:00.000 2012-07-31 00:00:00.000
6444 2007-08-01 00:00:00.000 2009-07-31 00:00:00.000
答案 0 :(得分:1)
select t1.*, t2.*
from table as t1
join table as t2
on t2.PERS_TYPE_SD > t1.PERS_TYPE_SD
and t2.PERS_TYPE_SD < t1.PERS_TYPE_ED
and t1.PERS_ID < t2.PERS_ID
order by t1.PERS_ID, t2.PERS_ID