У меня есть набор данных (VISIT1) дат посещения пациента (PROC1_DT) с датой, предшествующей 90 дням (LOOKBACK_DT). Я присоединился к этому VISIT1 с другой таблицей VISIT2, так что если PROC2_DT находится между PROC1_DT и LOOKBACK_DT, создается новый список.
Однако я хотел бы, чтобы все даты VISIT1 появлялись в окончательном наборе данных, даже если нет PROC2_DT, который находится между PROC1_DT и LOOKBACK_DT. Например, Доктор B и Пациент 5 не отображаются в НАСТОЯЩЕМ НАБОРЕ ФИНАЛЬНЫХ ДАННЫХ, потому что у пациента не было PROC2_DT, который попадал между PROC1_DT и LOOKBACK_DT.
Я пытался использовать COALESE
, но я явно не использую его должным образом и / или мне нужен другой метод.
VISIT1
Doctor Patient LOOKBACK_DT PROC1_DT
A 1 28APR2018 27JUL2018
A 2 07MAR2018 05JUN2018
A 3 19JUN2018 17SEP2018
A 4 22MAY2018 20AUG2018
B 5 07FEB2019 08MAY2019
C 6 14JUL2018 12OCT2018
C 7 10APR2018 09JUL2018
C 8 17NOV2018 15FEB2019
proc sql;
create table final_data_set as
select distinct
a.Doctor
, a.Patient
, a.LOOKBACK_DT
, coalesce(b.viisit_dt) as PROC2_DT format=date9.
, a.PROC1_DT
from
VISIT1 a
left join
( select *
from prvdr_bene_visit
where _proc2 ge 1
) b
on a.Patient=b.Patient
where
b.VISIT_DT ge a.lookback_dt
and b.VISIT_DT lt a.PROC1_DT
group by
a.Doctor
, a.Patient
, a.PROC1_DT
, a.lookback_dt
order by
a.Doctor
, a.Patient
, a.PROC1_DT
;
quit;
FINAL_DATA_SET
Doctor Patient LOOKBACK_DT PROC2_DT PROC1_DT
A 1 28APR2018 24JUL2018 27JUL2018
A 2 07MAR2018 03JUN2018 05JUN2018
A 3 19JUN2018 07SEP2018 17SEP2018
A 4 22MAY2018 18AUG2018 20AUG2018
C 6 14JUL2018 09OCT2018 12OCT2018
C 7 10APR2018 03JUL2018 09JUL2018
C 8 17NOV2018 28DEC2018 15FEB2019