I have been using the following syntax to conduct a fuzzy merge on dates between two tables: proc sql;
create table want as
select
a.*,
b.start as r_start format=date9.,
b.end as r_end format=date9.,
b.var1,
b.var2,
b.var3
from
a left join b
on a.id=b.id
group by a.id, a.start
having min((a.start-b.start)) = ((a.start-b.start))
;
quit; As an additional step, I need to specify that the minimum value of (a.start-b.start) is the minimum value that is >= 0. Essentially what I am trying to do is identify the closest date to a.start in table b, but with the added caveat that b.start has to have occurred before or on the same day as a.start
... View more