Улей определить записи с перекрытием дат - PullRequest
0 голосов
/ 15 марта 2019

У меня есть таблица A, как показано ниже, необходимо найти перекрывающиеся даты на основе идентификатора транзакции

Несколько записей для одного и того же идентификатора транзакции, нужно найти, есть ли перекрывающиеся даты, и вернуть эти записи

enter image description here

1 Ответ

0 голосов
/ 15 марта 2019

Вы можете попробовать exists:

select t.*
from t
where exists (select 1
              from t t2
              where t2.transactionId = t.transactionId and
                    t2.enddate > t.startdate and
                    t2.startdate < t.enddate and
                    -- and not the same record
                    t2.startdate <> t.startdate and
                    t2.enddate <> t.enddate
             );

Как насчет фразы, как этот?

select t.*
from t join
     t t2
     on t2.transactionId = t.transactionId 
where t2.enddate > t.startdate and
      t2.startdate < t.enddate and
      t2.startdate <> t.startdate and
      t2.enddate <> t.enddate

(Если у вас есть уникальный идентификатор, то этим можно заменить два последних условия.)

Возможно, вы захотите select distinct, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...