簡體   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