Как я могу найти записи, чей диапазон дат перекрывается.Пожалуйста, посмотрите на следующую картинку.
select memid, enrid, memfirstname, memlastname,
gender, dob, relflag, udfc5, effdate,
termdate, lvlid5, lvldesc5, lvlid6, lvldesc6
from zzz_temp
where memid = '012345'
order by effdate, termdate;
Я выбрал одного члена (SUJAN SHRESTHA) из таблицы ZZZ_TEMP в качестве примера.В этой таблице более миллиона членов.Я хочу найти такие записи, чей диапазон дат перекрывается внутри члена.На приведенном выше рисунке effdate и termdate обозначают даты начала и окончания соответственно.Записи 1 и 2 имеют одинаковую дату и дату, которые пересекаются с записями 3 и 4 на 1 месяц 20 дней.Мне нужно найти только эти первые четыре записи.Все остальные записи будут исключены, поскольку effdate больше, чем termdate.
запрос, который я пробовал.
select t1.*
from zzz_temp t1
join t zzz_temp t2
on (t1.effdate > t2.effdate and t1.effdate < t2.termdate) or
(t1.termdate > t2.effdate and t1.termdate < t2.termdate) or
(t1.termdate > t2.termdate and t1.effdate < t2.effdate);
Но это не сработало.Может кто-нибудь помочь мне понять это.