proc sql;
select a.id1, coalesce(c.num1,a.num1) as num1
from a
left join
(select a.id1, b.num2 as num1 from a,b
having a.id1=b.id2) as c
on a.id1=c.id1;
quit;
proc sql;
select id,case when num2>0 and num1>0 then num2 else num1 end as number1,num2 as number2
from (select coalesce(a.id,b.id) as id,num1,num2 from a full join b on a.id=b.id);
quit;