Я генерирую синтаксическую ошибку в SAS 9.4 при попытке использовать CATX («|», a1-a5) в PROC SQL.Ошибка синтаксиса с использованием CATX в SAS PROC SQL
Почему первые два выхода работают, но третий не работает?
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;
Первый прок SQL и шаг данных производят ожидаемый «а | B | C | d | е» и т.д. Но третья процедура 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, ^=, |, ||, ~=.
Благодаря
Похоже, вы растягиваете гибкость/полную интеграцию с sql в sql с другими частями языка sas. Явным образом, к сожалению, ваш лучший снимок здесь. Если у вас нет десятков столбцов, в этом случае макро-переменная может помочь. –