PROC SQLでCATX( "|"、a1-a5)を使用しようとすると、SAS 9.4で構文エラーが発生します。SAS PROC SQLでCATXを使用するときの構文エラーSQL
なぜ最初の2つの出力は機能しますが、3番目の出力は失敗しますか?
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;
第PROCのSQLおよびデータ・ステップが期待生成 "| B | C | D | E"、等しかし、第三のproc SQL構文エラーが "A1" で指摘生成:
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, ^=, |, ||, ~=.
おかげ
あなたはproc sqlの柔軟性を伸ばしているようです/ sas言語の他の部分との完全な統合。残念なことに明示的なやり方がベストショットになるかもしれません。数十の列を持たない限り、マクロ変数が役立つ可能性があります。 –