繁体   English   中英

在以表别名为前缀的字段上使用“计算”​​功能-SAS SQL

[英]Using 'Calculated' function on field prefixed with table alias - SAS SQL

我正在尝试使下面的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只是一个重命名, b.var2 * -1可以了。

您试图创建一个包含两列具有相同名称( 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM