Sas 使用join更新多个列的有效方法

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

伙计们,我真的在和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
    ("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,我实际上正在考虑该选项,问题是事务表中有不同的名称……因此,请在事务表中获取相同的名称,或者创建一个专用视图以使其相同。