我正在使用proc import
导入文件create table work.login2
as select ' SURVEY_ID'n, TIME format=datetime20.,' USERNAME'n
from work.export_data
having TIME=max(TIME) and ' USERNAME'="sasdemo";
quit;
然后我从具有某些条件的出口表中选择了2个变量 proc SQL;
proc SQL;
select max(' SURVEY_ID'n) into: sid from work.login2;
quit;
然后我为survey_id创建了一个宏,因为我必须使用以下代码中显示的不同表格中的Survey_id引用更新一个值:
proc SQL;
case when ' SURVEY_ID'n is not null then update table_name set SAS_TRACKING_CODE="&Trackingcode."
where SURVEY_ID=&sid.
else end;
quit;
现在,如果ID为空,那么我不必插入任何内容,但如果我们有survey_id,我们会使用下面的代码在表格中更新几列,而不会发生。
start $folder
答案 0 :(得分:0)
proc sql中的语法无效。完全没有。 case when
只能在select
,where
,order by
等州内使用。
如果SURVEY_ID不为空,则以下内容将进行更新:
proc sql;
update table_name
set SAS_TRACKING_CODE="&Trackingcode"
where SURVEY_ID=&sid. and SURVEY_ID is not null
;
quit;
如果您想要的是在条件为真时执行update
,则应使用宏。
编辑:该宏看起来像这样:
%macro update;
%if %symexist(sid) and not &sid = %then %do;
proc sql;
update table_name
set SAS_TRACKING_CODE="&Trackingcode"
where SURVEY_ID=&sid.
;
quit;
%end;
%mend;