我试图让以下 Proc SQL 步骤在 SAS 9.2 中工作,但它失败了,因为它似乎不喜欢我在合并期间使用表别名来定义两个表中的字段:
proc sql;
create table test1 as
select
a.var1,
b.var2 * -1 as var2,
b.var3,
calculated b.var1 * a.var2 as var4
from table1
left join
table2
on a.var5 = b.var5;
quit;
如果“计算”命令和字段名称之间没有表别名,则此代码将毫无问题地执行。有谁知道我正在寻找的语法来解决这个问题?
如果我不使用计算命令,SQL 步骤将无法识别定义字段“var1”时使用的计算。
谢谢
最佳答案
CALCULATED
告诉它引用存在于输出(选择中)而不是输入数据集中的列,因此表别名没有任何意义。 CALCULATED var2
就是您所需要的。
proc sql;
create table test1 as
select
a.var1,
b.var2 * -1 as var2,
b.var3,
calculated var2 * a.var1 as var4
from table1
left join table2
on a.id=b.id;
quit;
没关系,只要它不认为 b.var2 * -1
只是一个重命名。
关于sql - 在以表别名为前缀的字段上使用 'Calculated' 函数 - SAS SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25206382/