sql - 使用 SAS 中的另一个表更新表

标签 sql sas

我有表t1和t2,如何创建表t3?基本上我想更新 t1 中的 Var2,其中 t1.Key=t2.Key,使用 t2 中的数据,同时保持 t1 中的其他所有内容相同。

表t1

Key Var1 Var2

1    A    AA
2    B    BB
3    C    CC
4    D    DD
5    E    EE

表t2

Key Var1 Var2
3    C    XX
4    D    YY
6    F    FF

表t3

Key Var1 Var2
1    A    AA
2    B    BB
3    C    XX
4    D    YY
5    E    EE

以下 SAS 代码只会给出错误:

proc sql;
update t1 
set  var2 = t2.var2
from t1
inner join t2 on 
t1.key=t2.key;
quit;

谢谢!

最佳答案

可以这样做:

data t1;
  input Key Var1 $ Var2 $;
  datalines;
1    A    AA
2    B    BB
3    C    CC
4    D    DD
5    E    EE
;

data t2;
  input Key Var1 $ Var2 $;
  datalines;
3    C    XX
4    D    YY
6    F    FF
;

title 'Table T1';
proc print data=t1 noobs;run;

title 'Table T2';
proc print data=t2 noobs;run;

更新自身:

proc sql;
  update t1 set var2 = (select var2 from t2 where t2.key=t1.key)
    where t1.key in(select key from t2);
quit;

检查:

title 'Updated T1';
proc print data=t1 noobs;run;

enter image description here enter image description here enter image description here

关于sql - 使用 SAS 中的另一个表更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35656088/

相关文章:

mysql - unix_timestamp 未返回预期输出

sql - 跨行查询条件

sql - 从指定路径解析 XML

sas - 在具有重复 BY 值的 SET 或 MERGE 中使用多个数据集时,为什么我的变量不会在数据步骤之间重置?

mysql - 选择滚动月份数据

mysql - SQL 左外连接的意外输出

java - 有没有一种方法可以根据文本字段中输入的数据突出显示或为各个表行着色?

xml - 如何将两个 SAS 数据集的数据正确导出到一个 XML 数据文件?

sql - 如何删除 '2002' 和 '2006' 之间的特定键?

SAS 为组的其余部分返回组中的第一个值