Вам нужно показать больше вашего кода, который продемонстрирует проблему. Следующий пример такой же, как ваш, но не «сбой» для назначения желаемого index
Пример:
data master;
do name = 'A','B','C'; OUTPUT; end;
run;
data master;
set master;
index = _n_;
run;
data new;
do name = 'E','F','G'; OUTPUT; end;
run;
proc sql noprint;
insert into master(name) select name from new; * append new rows;
select max(index) into :next_index from master; * compute highest index known;
data master;
set master;
retain next_index &next_index; * utilize highest index;
if index = . then do;
next_index + 1; * increment highest index before applying;
index = next_index;
end;
drop next_index; * discard 'worker' variable;
run;
Возможно, вы случайно вставили 1
, если оператор вставки выглядел как
insert into master select name, 1 from new;
или для новых данных уже задан индекс '1'
insert into master select name, index from new;