Чтобы получить 'overlapping'
, используйте exists
:
select t.*,
(case when exists (select 1
from t t2
where t2.registereddate < t.termdate and
t2.termdate > t.registereddate
)
then 'overlaps'
end)
from t;
В обновлении это выглядит так:
update t
set flag = 'overlaps'
where exists (select 1
from t t2
where t2.registereddate < t.termdate and
t2.termdate > t.registereddate
);
Получение списка перекрывающихся записей в строковом поле намного, намного сложнее в SQL Server. Получить парный список перекрытий довольно просто.