Отображение перекрытия дат из одной таблицы в T- SQL - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть следующий Эпизод пример таблицы:

Обратите внимание, где DischDate = "2020-02-20" означает - клиент не был разряжен. Это похоже на NULL (эта дата предназначена для заполнения NULL)

enter image description here

Моя цель состоит в том, чтобы отобразить все возможные перекрытия в одном и том же EHRClientFK следующим образом:

См. Схему всех моих возможных перекрытий: enter image description here

Итак, в случае этой таблицы я ожидаю отобразить - EHRClientFK / AdmDate / DischDate только для EHRClientFK = 2 , 4, 3, 5 (что удовлетворяет схеме):

Это должна быть результирующая таблица: enter image description here

EHRClientFK значения 8,9,10 не имеют дубликаты (перекрытия), клиенты 6, 7 имеют две даты адм-дис, но они НЕ перекрываются между собой. друг друга

Для достижения этого результата у меня есть следующий код:

     SELECT 
           a.[EHRClientFK]
          ,a.[AdmDate]
          ,a.[DischDate]

    FROM [WH].[dbo].[Episode] a
    INNER JOIN [WH].[dbo].[Episode] b ON a.EHRClientFK = b.EHRClientFK 

    WHERE
         ((a.DischDate = '2020-02-20') AND (b.DischDate = '2020-02-20'))
      OR ((a.AdmDate < b.DischDate) AND (b.AdmDate < a.DischDate))


   GROUP BY
           a.[EHRClientFK]
          ,a.[AdmDate]
          ,a.[DischDate]

   HAVING COUNT (*) >1

Но, когда я применяю это в моей исходной таблице (с более чем 20K записями) - у меня все еще нет дубликат EHRClientFK, например 8,9,10 (очень незначительная сумма, но все же); и в некоторых случаях 6,7 без НО перекрывающихся дат

Как мне изменить мое предложение Где , чтобы удовлетворить мою схему перекрытия (чтобы охватить все случаи перекрытия) "?

...