Just curious (because I don't know), would you expect the run time on this to be greater than other solutions? Do recursive CTEs take a while to run?
Here is what the final query ended up being...I had to add an additional CTE to get the data how I wanted it...
It is still running as I type at about 1 Hour 30 min. Perhaps I did something wrong adding the other CTE.
with cte0 as (SELECT ddw.Patient.EMPI
, ddw.Patient.Medical_Record_Number
, dbo.Encounter.Encounter_Number
, fixed.Date.Date
FROM ddw.Diagnosis RIGHT OUTER JOIN
dbo.Encounter_Diagnosis ON ddw.Diagnosis.Diagnosis_Key = dbo.Encounter_Diagnosis.Diagnosis_Key RIGHT OUTER JOIN
dbo.Charge LEFT OUTER JOIN
ddw.HCPCS ON dbo.Charge.HCPCS_Key = ddw.HCPCS.HCPCS_Key RIGHT OUTER JOIN
dbo.Encounter ON dbo.Charge.Encounter_Key = dbo.Encounter.Encounter_Key LEFT OUTER JOIN
ddw.CCF_Payor ON dbo.Encounter.CCF_Payor_Key = ddw.CCF_Payor.CCF_Payor_Key LEFT OUTER JOIN
ddw.SL_Physician ON dbo.Encounter.Service_Line_Physician_Key = ddw.SL_Physician.Physician_Key LEFT OUTER JOIN
ddw.Patient ON dbo.Encounter.Patient_Key = ddw.Patient.Patient_Key LEFT OUTER JOIN
fixed.Date ON dbo.Encounter.Discharge_Date_Key = fixed.Date.Date_Key ON
dbo.Encounter_Diagnosis.Encounter_Key = dbo.Encounter.Encounter_Key
WHERE (fixed.Date.Year > 2014) AND (ddw.CCF_Payor.CCF_Payor_Code IN ('1', '2')) AND (ddw.SL_Physician.Service_Line_Institute_Code = 'CAN00') AND
(ddw.HCPCS.HCPCS_Code IN ('96401', '96402', '96409', '96411', '96413', '96415', '96416', '96417', '96446', '96450', '96521', '96522', '96523', '96542', '96549')) AND
(ddw.Diagnosis.Diagnosis_Code LIKE 'C910%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C913%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C915%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C916%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C91a%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C920%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C923%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C924%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C925%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C926%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C92a%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C930%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C940%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C942%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C943%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C950%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C21%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C65%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C66%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C67%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C68%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C50%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C911%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C921%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C70%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C71%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C72%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C73%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C74%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C75%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C7A%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C51%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C52%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C53%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C54%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C55%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C15%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C16%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C00%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C01%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C02%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C03%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C04%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C05%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C06%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C07%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C08%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C09%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C10%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C11%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C12%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C13%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C14%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C30%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C31%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C32%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C33%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C69%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C760%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C17%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C18%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C19%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C20%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C64%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C22%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C23%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C24%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C34%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C39%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C45%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C81%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C82%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C83%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C84%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C85%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C86%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C88%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C914%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C43%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C946%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'D46%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C90%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C56%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C25%' OR
ddw.Diagnosis.Diagnosis_Code LIKE 'C61%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2040%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2053%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2060%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2070%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2072%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2080%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1542%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1543%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1548%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '188%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1891%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1892%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1893%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1894%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1898%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1899%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '174%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '175%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2041%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2051%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '191%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1920%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1921%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1922%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1923%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1928%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1929%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '193%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1940%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1941%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1943%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1944%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1945%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1946%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1948%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1949%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2090%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2091%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2092%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '179%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '180%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '182%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1840%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1841%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1842%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1843%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1844%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '150%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '151%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '140%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1410%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1411%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1412%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1413%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1414%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1415%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1416%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1418%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1419%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1420%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1421%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1422%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1428%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1429%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '143%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '144%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1450%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1451%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1452%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1453%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1454%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1455%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1456%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1458%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1459%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1460%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1461%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1462%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1463%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1464%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1465%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1466%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1467%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1468%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1469%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '147%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1480%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1481%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1482%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1483%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1488%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1489%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '149%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1600%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1601%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1602%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1603%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1604%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1605%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1608%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1609%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '161%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1620%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '190%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1950%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '152%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '153%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1540%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1541%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1890%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '155%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1560%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1561%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1562%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1568%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1569%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1622%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1623%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1624%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1625%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1628%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1629%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '165%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2000%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2001%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2002%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2003%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2004%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2005%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2006%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2007%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2008%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '201%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2020%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2021%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2022%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2024%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2027%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2733%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '172%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2030%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '2031%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '1830%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '157%' OR
ddw.Diagnosis.Diagnosis_Code LIKE '185%' OR
ddw.Diagnosis.Diagnosis_Code = '20500' OR
ddw.Diagnosis.Diagnosis_Code = '20501' OR
ddw.Diagnosis.Diagnosis_Code = '20502' OR
ddw.Diagnosis.Diagnosis_Code = '20930' OR
ddw.Diagnosis.Diagnosis_Code = '20280' OR
ddw.Diagnosis.Diagnosis_Code = '20281' OR
ddw.Diagnosis.Diagnosis_Code = '20282' OR
ddw.Diagnosis.Diagnosis_Code = '20283' OR
ddw.Diagnosis.Diagnosis_Code = '20284' OR
ddw.Diagnosis.Diagnosis_Code = '20285' OR
ddw.Diagnosis.Diagnosis_Code = '20286' OR
ddw.Diagnosis.Diagnosis_Code = '20287' OR
ddw.Diagnosis.Diagnosis_Code = '20288' OR
ddw.Diagnosis.Diagnosis_Code = '20380' OR
ddw.Diagnosis.Diagnosis_Code = '20382' OR
ddw.Diagnosis.Diagnosis_Code = '20381' OR
ddw.Diagnosis.Diagnosis_Code = '23872' OR
ddw.Diagnosis.Diagnosis_Code = '23873' OR
ddw.Diagnosis.Diagnosis_Code = '23874' OR
ddw.Diagnosis.Diagnosis_Code = '23875')
GROUP BY ddw.Patient.EMPI, ddw.Patient.Medical_Record_Number, dbo.Encounter.Encounter_Number, fixed.Date.Date) ,
cte1
as (select cte0.EMPI
,cte0.Medical_Record_Number
,min(cte0.[date]) as [date]
,cast(1 as bigint) as rn
from cte0
group by EMPI
,Medical_Record_Number
union all
select a.EMPI
,a.Medical_Record_Number
,b.[date]
,row_number() over(order by b.[date]) as rn
from cte1 as a
inner join cte0 AS b
on b.EMPI=a.EMPI
and b.Medical_Record_Number=a.Medical_Record_Number
and b.[date]>dateadd(day,180,a.[date])
where a.rn=1
)
,cte2
as (select empi
,Medical_Record_Number
,[date]
,row_number() over(partition by EMPI
,Medical_Record_Number
order by [date]
)
as rn
from cte1
where rn=1
)
select b.EMPI
,b.Medical_Record_Number
,b.Encounter_Number
,b.[date]
,case
when a.[date]=b.[date]
then 'Yes'
else 'No'
end as 'anchor'
,a.rn as id
from cte2 as a
inner join cte0 AS b
on b.empi=a.empi
and b.Medical_Record_Number=a.Medical_Record_Number
and b.[date]>=a.[date]
and b.[date]<dateadd(day,180,a.[date])
order by b.empi
,b.Medical_Record_Number
,b.[date]
;