As @Tom suggests, you appear to want to interleave records from 2 data sets instead of match-merging them.
I.e. you want the analog of the second program below:
data mostrecent_asof_2018OCT;
merge mostrecent_asof_2018SEP updates_for_2018OCT;
by id;
run;
** versus **;
data complete_history_through_2018OCT;
set complete_history_through_2018SEP upodates_for_2018OCT;
by id;
run;
The first program REPLACES data in mostrecent_asof_2018SEP (the "old master") with matching observations in updates_for_2018OCT (the "update data set"), and only increases the number of obs in the resulting dataset for (1) records in the update data set having id's absent from the old master, and (2) instances in which a given ID has more records in the update data set than in the old master. BTW, condition (2) is usually a reason why you would only want to use this approach when there is never more than one record per BY-variable (or per list of BY variables) in both data sets.
The second program INTERLEAVES observations, your apparent goal. So the new number of observations exactly equals the sum of the number of obs in the incoming data sets.
... View more