Currently takes about 1.5 hours to run. PROC SQL; CREATE TABLE WORK.QUERY_MedicalTable AS SELECT DISTINCT (CASE WHEN MISSING(SUBSTR(t1.SVCCD,1,3)) THEN t2.SOURCE2 ELSE (SUBSTR(t1.SVCCD,1,3)) END) AS SOURCE ,t1.LOC_ID_CD AS PRIOR_LOCATION ,(SUM(t1.SVC_UNT_QT)/3) AS PRIOR_QUANTITY_AVG ,t2.LOC_ID_CD AS CURRENT_MONTH_LOCATIONS ,t2.CURRENT_MONTH_QUANTITY ,((t2.CURRENT_MONTH_QUANTITY - (SUM(t1.SVC_UNT_QT)/3))/ (SUM(t1.SVC_UNT_QT))) AS VARIANCE FROM MedicalTable t1 FULL JOIN (SELECT DISTINCT SUBSTR(t2a.SVCCD,1,3) AS SOURCE2 ,t2a.LOC_ID_CD ,SUM(t2a.SVC_UNT_QT) AS CURRENT_MONTH_QUANTITY FROM MedicalTable t2a WHERE t2a.YR_NB = 2019 AND t2a.MM_NB = 4 GROUP BY SUBSTR(t2a.SVCCD,1,3), t2a.LOC_ID_CD) t2 ON (t1.LOC_ID_CD = t2.LOC_ID_CD AND SUBSTR(t1.SVCCD,1,3) = t2.SOURCE2) WHERE t1.YR_NB = 2019 AND t1.MM_NB BETWEEN 1 AND 3 GROUP BY SUBSTR(t1.SVCCD,1,3), t1.LOC_ID_CD, t2.LOC_ID_CD, t2.SOURCE2 HAVING (((t2.CURRENT_MONTH_QUANTITY - (SUM(t1.SVC_UNT_QT)/3))/ (SUM(t1.SVC_UNT_QT))) NOT BETWEEN .0000001 AND .049999) OR (((t2.CURRENT_MONTH_QUANTITY - (SUM(t1.SVC_UNT_QT)/3))/ (SUM(t1.SVC_UNT_QT))) NOT BETWEEN -.0000001 AND -.049999) ORDER BY SUBSTR(t1.SVCCD,1,3) ASC , t1.LOC_ID_CD ASC; QUIT;
... View more