+----------+-----------+-----------+-----------+----------+
| ClientID | EpisodeID | StartDT | EndDT | Location |
+----------+-----------+-----------+-----------+----------+
| 1 | 1 | 3/1/2019 | 3/14/2019 | A |
+----------+-----------+-----------+-----------+----------+
| 1 | 2 | 6/5/2019 | 6/18/2019 | B |
+----------+-----------+-----------+-----------+----------+
| 1 | 3 | 6/21/2019 | 6/25/2019 | C |
+----------+-----------+-----------+-----------+----------+
| 2 | 5 | 4/13/2019 | 4/19/2019 | A |
+----------+-----------+-----------+-----------+----------+
| 2 | 6 | 4/25/2019 | 5/2/2019 | A |
+----------+-----------+-----------+-----------+----------+
| 3 | 10 | 8/1/2019 | 8/18/2019 | E |
+----------+-----------+-----------+-----------+----------+
| 3 | 11 | 10/1/2019 | 10/9/2019 | F |
+----------+-----------+-----------+-----------+----------+
Поиск выходных данных только для последней строки эпизода для каждого клиента, если имеется несколько эпизодов или реадмиссия в 30-дневном окне (30 дней между датой окончания предыдущего эпизода и датой начала следующего эпизода), в то время как также сохраняет эпизоды этого клиента, если не было последующего эпизода через 30 дней после EndDT.
Желаемый выход:
+----------+-----------+-----------+-----------+----------+
| ClientID | EpisodeID | StartDT | EndDT | Location |
+----------+-----------+-----------+-----------+----------+
| 1 | 1 | 3/1/2019 | 3/14/2019 | A |
+----------+-----------+-----------+-----------+----------+
| 1 | 3 | 6/21/2019 | 6/25/2019 | C |
+----------+-----------+-----------+-----------+----------+
| 2 | 6 | 4/25/2019 | 5/2/2019 | A |
+----------+-----------+-----------+-----------+----------+
| 3 | 10 | 8/1/2019 | 8/18/2019 | E |
+----------+-----------+-----------+-----------+----------+
| 3 | 11 | 10/1/2019 | 10/9/2019 | F |
+----------+-----------+-----------+-----------+----------+
Попытка упрощенного кода:
WITH CTE AS
(
SELECT
ClientID
,EpisodeID
,StartDT
,EndDT
,Location
FROM DeNormalized DN)
SELECT
CTE.*
FROM CTE
INNER JOIN CTE CTE2
ON CTE.ClientID=CTE2.ClientID
WHERE 1=1
AND DATEDIFF(day,CTE2.EndDT,CTE.StartDT) <= 30
У меня также нет разрешений DDL, кроме временных объектов, поскольку это размещенная база данных T-SQL