Лучше, конечно, выполнить один запрос.Но если у вас нет такой возможности, у вас есть несколько вариантов.
Самым SAS-подобным является не SQL-запрос, а оператор MODIFY
.Это выполняет левое соединение и изменяет основной набор данных - не заменяет его.Вы должны иметь все предварительно определенные переменные, чтобы это работало.
data class(index=(name));
set sashelp.class;
call missing(predict); *define PREDICT so it is available to be updated;
where sex='F';
run;
data classfit(index=(name));
set sashelp.classfit;
run;
data class;
modify class classfit; *only PREDICT will be appended here;
by name;
select (_IORC_); *this processes the 'left' join;
when (%sysrc(_sok)) replace; *if in master then replace;
when (%sysrc(_dsenmr)) delete; *if not in master then delete;
otherwise abort;
end;
run;
proc contents data=class;
run;
Вы можете сделать что-то подобное в SQL, используя оператор UPDATE
.
proc sql;
update class
set predict = (
select predict from classfit
where class.name=classfit.name
);
quit;
proc contents data=class;
run;