使用proc SQL更新

时间:2018-07-24 12:40:25

标签: sql sas

美好的一天

我想更新表,以便标记两列之间的距离。我当时正在考虑使用 proc sql 做到这一点。我可以通过几个不同的数据集来做到这一点,但是单个命令会更优雅。

但是,下面的代码给了我以下错误:

proc sql noprint; 
    update devStuff set flag =1  where portal in  
    (select distinct(portal) from devStuff 
    group by country, portal
    having  abs(max(last_proc) - max(pvm) ) >= 3) 
; quit;
  

错误:您无法重新打开WORK.DEVSTUFF.DATA以进行成员级控件的更新访问,因为   资源环境SQL中正在使用WORK.DEVSTUFF.DATA。   错误:如果发生错误,则PROC SQL无法撤消该语句,因为它无法获取          独占访问数据集。该语句不会作为SQL选项执行          UNDO_POLICY = REQUIRED生效。

显然,我无法对要更新的数据集进行子查询。 (是的,这在'real sql'中应该是正常的。)

这是“按原样”还是有巧妙的解决方法?

1 个答案:

答案 0 :(得分:1)

如果要更改要查询的表,请尝试更改proc sql语句:

proc sql undo_policy=none noprint;

这是日志中提示错误消息的选项。