У меня есть следующее, если-иначе условие в макросе SAS:Как элегантно писать несколько условий if-else в SAS?
%if &restart_flg = Y %then %do;
%if %sysfunc(exist(&library.f2)) %then %do;
proc sql;
Connect to xxxxx as dbcon (user=xx pw=xx server=xx port=xxx database=xxxxx);
select * into :prcs_flag_cnt
from connection to dbcon (
select count(1)::smallint
from &library.f2
where flag = 1 and pflag <> 'N'
);
quit;
%put Process count flag: &prcs_flag_cnt;
%if &prcs_flag_cnt > 0 %then %do;
%let rflag = Y;
%end;
%else %do;
%let rflag = N;
%end;
%end;
%else %do;
%let rflag = N;
%end;
%end;
%else %do;
%let rflag = N;
%end;
я в основном проверка, если конкретное исполнение является новым исполнения или перезапуск один и заселить rflag соответственно (Y для перезагрузки, N для новый старт). Во-первых, я проверяю, является ли restart_flg Y, если это так, я проверяю наличие набора данных SAS (flags2), и если он существует, я проверяю, существует ли какая-либо из записей с флагом = 1 и pflag <> 'N' а затем заполнить Y или N для rflag соответственно. Если параметр restart_flg равен N на первом месте, значение rflag равно N.
Я нахожу путь множественным, если условия, написанные в коде, менее элегантны. Есть ли лучший способ написать это условие if-else или выполнить эту функцию?
Спасибо!
как об использовании [выберите] (http://v8doc.sas.com/sashtml/lgref/z0201966.htm) –