Datastep merge requires that both datasets are sorted by the by variables. This is a hard and fixed rule. There is nothing stopping you making a copy of the datasets, sorting and merging those.
Other alternatives include using a proc sql code block and rewrite the code you have to be base ANSI, maybe something like:
proc sql;
create table want as
select a.var1,
case when b.value1 ne "" then b.value1 else a.value1 end as value1
from tablea a
left join tableb b
on a.var1=b.var1;
quit;
This still of course does the sorts, its just implicit in the SQL parser to do this rather than you writing the code.
Another way could be hash table, not yet had a reason to use these, so look up some of the plenty of examples on the web or here.
... View more