用proc sql更新

And*_*y K 5 sql sas

它应该是一个简单的,但我被卡住了

Proc sql; 

UPDATE dicofr 
SET    dicofr.period = correspondance.period 
FROM   dicofr 
INNER JOIN correspondance 
ON dicofr.name_fic = correspondance.name_fic; 
Run Code Online (Sandbox Code Playgroud)

我在想我的更新会完成,但我得到了这个错误.

271  proc sql;
272  update dicofr
273  set dicofr.period = correspondance.period
           -
           73
           76
ERROR 73-322: Expecting an =.

ERROR 76-322: Syntax error, statement will be ignored.
Run Code Online (Sandbox Code Playgroud)

我试过直接加入一个 select

proc sql;
SELECT * FROM dicofr INNER JOIN correspondance 
ON dicofr.nom_fic=correspondance.nom_fic;
Run Code Online (Sandbox Code Playgroud)

选择很好.

怎么会?

我的SQL查询不正确吗?我不这么认为......

编辑:似乎我想做的更新是不可能的.有没有办法用SAS语言做我想要的?

Joe*_*Joe 10

由于某种原因,SAS不支持UPDATE语句中的JOIN.您需要通过嵌套选择来完成.

proc sql;
update tableA A
set var=
  (select var 
  from tableB B 
  where B.id=A.id)
where exists (
  select 1 
  from tableB B
  where B.id=A.id);
quit;
Run Code Online (Sandbox Code Playgroud)