Sas 使用join更新多个列的有效方法
伙计们,我真的在和it打交道 需要更新的表格约有15行和200列 我需要使用工作表更新一些列 这是(部分)我需要做的:Sas 使用join更新多个列的有效方法,sas,Sas,伙计们,我真的在和it打交道 需要更新的表格约有15行和200列 我需要使用工作表更新一些列 这是(部分)我需要做的: %macro condition; %if &row_count>0 %then %do; data _null_; set W4TWGKJ6 end=final; if _n_ = 1 then call execute("proc sql ;"); call execute ("upd
%macro condition;
%if &row_count>0 %then %do;
data _null_;
set W4TWGKJ6 end=final;
if _n_ = 1 then call execute("proc sql ;");
call execute
("update dds.insurance_policy set X_STORNO_BY_VERSION="||TOSNUM||" where policy_no='"||cats(polid)||"' and X_INSURANCE_PRODUCT_CD='"||cats(prodid)||"'
and X_INSURER_SERIAL_NO = "||X_INSURER_SERIAL_NO||" and x_source_system_cd ="||'"5"'||" and x_source_system_category_cd ="||'"5"'||" and x_current_ind = "||'"Y"'||";,
update dds.insurance_policy set STATUS_CHANGE_DT="||ISSUE_DT||" where policy_no='"||cats(polid)||"' and X_INSURANCE_PRODUCT_CD='"||cats(prodid)||"'
and X_INSURER_SERIAL_NO = "||X_INSURER_SERIAL_NO||" and x_source_system_cd ="||'"5"'||" and x_source_system_category_cd ="||'"5"'||" and x_current_ind = "||'"Y"'||";");
if final then call execute('quit;'); run;
%end;
%mend;
%condition;
我首先检查表中是否有行(&row\u count)
如果有,
我更新了2列(我需要更新5列,我只是从示例中剪切了它们)
使用名为W4TWGKJ6的工作表
此更新需要永久更新。
事实上,我每次都停止了这个过程,因为它工作了好几个小时,没有返回任何东西
有谁知道这个问题更好的解决方案吗
提前感谢,,
Gal.我建议在数据步骤中使用
MODIFY
语句:
对于BY变量,两个表中的列名应该相同,并按这些变量对它们进行排序
data dds.insurance_policy;
modify
dds.insurance_policy
W4TWGKJ6 (keep= POLICY_NO X_INSURER_SERIAL_NO /* key variables */
X_STORNO_BY_VERSION STATUS_CHANGE_DT /* ... other variables from source to update target */
updatemode=nomissingcheck;
by POLICY_NO X_INSURER_SERIAL_NO;
if _iorc_ = %sysrc(_SOK) then do;
* Update row ;
replace;
end;
else _error_ = 0;
run;
有关iorc返回值的完整参考,请参阅。谢谢vasja,我实际上正在考虑该选项,问题是事务表中有不同的名称……因此,请在事务表中获取相同的名称,或者创建一个专用视图以使其相同。