使用';计算';以表别名为前缀的字段上的函数-SAS SQL

使用';计算';以表别名为前缀的字段上的函数-SAS SQL,sql,sas,Sql,Sas,我正试图让以下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; 如果“compute

我正试图让以下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;
如果“computed”命令和字段名之间没有表别名,则执行此代码时不会出现问题。有人知道我想要的语法吗

如果我不使用computed命令,SQL步骤将无法识别定义字段“var1”时使用的计算


谢谢

您正在尝试创建一个表,该表包含两个同名列(
var1
)。我对
procsql
的抱怨并不感到惊讶。尝试给他们起不同的名字:

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;

computed
告诉它引用存在于输出(选择)中的列,而不是存在于输入数据集中,因此表别名没有任何意义<代码>计算变量2是您所需要的全部

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
只是一个重命名。

对不起,是的,我刚刚意识到我不需要别名。谢谢你的帮助。