Ich erzeuge einen Syntaxfehler in SAS 9.4 beim Versuch, CATX ("|", von a1-a5) in PROC SQL zu verwenden.Syntaxfehler mit CATX in SAS PROC SQL
Warum funktionieren die ersten beiden Ausgänge, aber der dritte schlägt fehl?
data test;
input a1 $ a2 $ a3 $ a4 $ a5 $;
cards;
a b c d e
f g h i j
k l m n o
p q r s t
u v w x y
;
run;
proc sql;
select CATX('|',a1,a2,a3,a4,a5) as catx from test;
quit;
data test2;
set test;
catx=CATX('|',OF a1-a5);
run;
proc print data=test2; run;
proc sql;
select CATX('|',OF a1-a5) as catx from test;
quit;
Die erste proc sql und die Daten Schritt produzieren die erwartete "a | b | c | d | e", etc. Aber die dritte proc sql erzeugt ein Syntaxfehler bei der "a1" spitz:
32 proc sql;
33 select CATX('|',OF a1-a5) as catx from test;
--
22
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, (, *, **, +, ',', -, '.', /, <, <=, <>, =, >, >=, ?, AND, BETWEEN,
CONTAINS, EQ, EQT, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=.
Dank
Scheint so, als würden Sie die Flexibilität/vollständige Integration von proc sql mit anderen Teilen der sas-Sprache dehnen. Der explizite Weg könnte hier leider der beste sein. Es sei denn, Sie haben Dutzende von Spalten, in diesem Fall könnte eine Makrovariable hilfreich sein. –