【发布时间】:2016-06-23 04:30:47
【问题描述】:
尝试在 PROC SQL 中使用 CATX("|", of a1-a5) 时,我在 SAS 9.4 中生成语法错误。
为什么前两个输出有效,但第三个失败?
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 和 data 步骤产生预期的“a|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 语言的其他部分的完全集成。不幸的是,明确的方式可能是你最好的选择。除非您有几十列,在这种情况下,宏变量可能会有所帮助。
标签: sas