使用SQL更新SAS中的表时无法重新打开错误
我有两张桌子:使用SQL更新SAS中的表时无法重新打开错误,sql,sas,Sql,Sas,我有两张桌子: t1带列A、B、X、Y、Z和 t2带列A、B、N 我想将t1.A设置为valuet2.N,其中t1.A=t2.A和t1.B=t2.B 听起来很简单,但我不知道如何解决这个问题;我试过这样的方法: update t1 set A = (select t2.N from t1,t2 where t1.A = t2.A and t1.B = t2.B)
带列t1
和A、B、X、Y、Z
带列t2
A、B、N
t1.A
设置为valuet2.N
,其中t1.A=t2.A和t1.B=t2.B
听起来很简单,但我不知道如何解决这个问题;我试过这样的方法:
update t1 set A = (select t2.N
from t1,t2
where t1.A = t2.A
and t1.B = t2.B)
......
但这会产生一个错误:
ERROR: You cannot reopen t1.DATA for update access with member-level control because t1.DATA .....
有什么想法吗?我想你只是想要一个相关的子查询:
update t1
set A = (select t2.N
from t2
where t1.A = t2.A and t1.B = t2.B
);
注意:您应该注意子查询只返回一行。除了语法错误之外,还有一个旁注:您得到了
错误:您无法使用成员级控件打开用于输出访问的WORK.T1.DATA,因为您正在资源环境DATASTEP中使用WORK.T1.DATA。
因为您的输出数据集在窗户。重新运行之前,请关闭视图表:Work.T1
我试图澄清一下这个问题。我很确定在运行之前我关闭了窗口,所以我认为这是SQL引擎的问题,不管怎样:谢谢你的提示。