2017-12-28 15 views
1

Ich muss ein spezielles Zeichen (% und Leerzeichen) im Namen alsias einer proc SQL-Anweisung haben.Sonderzeichen im Alias ​​Proc sql- SAS 9.3

proc sql DQUOTE=ANSI; 
create table final_data as 
select a.column1 as XYZ, 
((a.colum2/b.colum2)-1) as "% VS LY" 
from table1 a 
join table2 b on a.colum3=b.colum3; 
quit; 

nach der Dokumention, mit der Option proc sql DQUOTE = ANSI funktionieren soll ..

http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001393333.htm

Allerdings erhalte ich diesen Fehler in SAS 9.3

ERROR: Der Wert% VS LY ist kein gültiger SAS-Name.

Was soll ich tun, damit dies funktioniert?

Vielen Dank im Voraus!

Antwort

1

Eine einfachere Lösung wäre die Verwendung der Standardbenennung und eines SAS-Labels. Wenn der berechnete Wert zwischen 0 und 1 liegt, können Sie auch ein SAS-Format hinzufügen.

((a.colum2/b.colum2)-1) as vs_ly_pct label='% VS LY' format=percent5.2 

Wenn Sie wirklich nicht-Standard-Spaltennamen wollen, werden Sie auch

options validvarname = any; 

vor dem Proc SQL einstellen müssen.

0

In SQL verwenden Sie einen Alias, um Variablenreferenzen voranzustellen, um festzustellen, aus welcher Eingangstabelle (oder Unterabfrage) die Variable stammt. Wie die a und b in Ihrer Abfrage. Worüber du sprichst, ist die Variable NAME.

SAS-Variablennamen sind normalerweise auf Unterstriche und alphanumerische Zeichen beschränkt (und können nicht mit einer Zahl beginnen), aber die Variable LABELS kann eine beliebige Zeichenfolge sein. Sie können einfach die Bezeichnung nach dem Namen angeben.

select a.column1 as XYZ 
    , ((a.colum2/b.colum2)-1) as var2 '% VS LY' 

Oder verwenden Sie die SAS spezifische LABEL= Syntax

select a.column1 as XYZ 
    , ((a.colum2/b.colum2)-1) as var2 label='% VS LY'