我正试图让以下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;
如果没有'Calculated'命令和字段名称之间的表别名,则此代码将毫无问题地执行。有谁知道我想要解决这个问题的语法?
如果我不使用计算的命令,则SQL步骤无法识别定义字段'var1'时使用的计算。
由于
答案 0 :(得分:3)
CALCULATED
告诉它引用输出中存在的列(在select中),而不是在输入数据集中,因此表别名没有任何意义。你只需要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
只是重命名。
答案 1 :(得分:2)
您正在尝试创建一个包含两个具有相同名称(var1
)的列的表。 proc sql
抱怨我并不感到惊讶。尝试给他们不同的名字:
proc sql;
create table test1 as
select a.var1 as a_var1,
b.var1 * -1 as b_var1,
b.var2,
calculated b_var1 * a.var1 as var3
from table1 left join
table2
on a.var4 = b.var4;
quit;