Why not this?
PROC SQL;
CREATE TABLE FLAGS AS
SELECT DISTINCT
A.*, sn.STROKE_ISC
CASE WHEN MISSING(D.CIHI_KEY)=0 THEN 'DAD'
WHEN MISSING(N.CIHI_KEY)=0 THEN 'NACRS'
ELSE ''
END AS TRANS_TYPE,
CASE WHEN MISSING(sn.CIHI_KEY)=0 THEN 'strokenacrs'
ELSE ''
END AS STROKE_NACRS,
CASE WHEN MISSING(dsc.CIHI_KEY)=0 THEN 'strokenacrsdsc'
ELSE ''
END AS Stroke_nacrs_dsc
FROM FinalDADAbstracts AS A
LEFT JOIN CIHI.DAD1819Q4 AS D
ON A.HCNE=D.HCNE AND A.HCNE~='9999999999'
AND (DATEPART(D.DISCH_DT)<=DATEPART(A.ADM_DT)<=DATEPART(D.DISCH_DT)+1)
LEFT JOIN CIHI.NACRS1819Q4 AS N
ON A.HCNE=n.HCNE AND A.HCNE~='9999999999'
AND (DATEPART(n.Reg_DT)<=DATEPART(A.ADM_DT)<=DATEPART(n.Reg_DT)+1)
LEFT JOIN STROKE_NACRS /*(where=(STROKE_ISC=1))*/ AS sn
ON A.HCNE=sn.HCNE AND A.HCNE~='9999999999'
AND (DATEPART(sn.Reg_DT)<=DATEPART(A.ADM_DT)<=DATEPART(sn.Reg_DT)+1)
LEFT JOIN Stroke_nacrs_dsc AS dsc
ON A.HCNE=dsc.HCNE AND A.HCNE~='9999999999'
AND A.CIHI_KEY~=dsc.CIHI_KEY
AND (DATEPART(dsc.Reg_DT)<=DATEPART(A.ADM_DT)<=DATEPART(dsc.Reg_DT)+1)
LEFT JOIN INST_EVT AS E
ON (D.INST_NO=STRIP(PUT(E.INST_AT,BEST32.)) OR n.INST_NO=STRIP(PUT(E.INST_AM,BEST32.)))
/*where TRANS_INST_NACRS in ('4452','4248','4107','4131','4044','4268','4063','4144','4200','4845','4171','4138','4618','3982','4734','4071','4073','4238','4097','4124','3987','3972','4137','4168','4264','4123','4685','4245','4870')
or TRANS_INST_DAD IN ('1206','4415','4675','4451','2103','3734','3944','1946','1777','4059','1160','2110','4844','3932','2046','4616','4213','4730','1804','1768','1223','3988','2150','1825','4407','4353','1754','2207','3414','4681','3929','4871')*/
ORDER BY A.CIHI_KEY;
QUIT;
... View more