sql - 在以表别名为前缀的字段上使用 'Calculated' 函数 - SAS SQL

标签 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;

如果“计算”命令和字段名称之间没有表别名,则此代码将毫无问题地执行。有谁知道我正在寻找的语法来解决这个问题?

如果我不使用计算命令,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/

相关文章:

RJDBC::dbConnect 期间的 Java 异常错误:如何静默忽略?

sas - %str 和 %bquote 之间的宏 sas 差异

sql - mysql 中组合联接的语法

每个子句上带有参数的并集的 SQL View

sql - 我需要创建一个字段,该字段是最大日期的第二个日期

multithreading - SAS是否有像Java这样的并发框架

SQL查询根据其他字段统计有多少个值

mysql - 合并具有相同设计的两个数据库(Mysql)

sql - 在 SQL 中比较两组日期范围

sas - 如何合并SAS保持格式的两列