我正在使用SAS指南7.1,我需要使用proc sql运行一个进程,但是它不能很好地工作,尽管它可以很好地处理步骤数据。 愚蠢的代码复制了问题
data test;
input date;
datalines;
20140101
;
run;
data test2;
set test;
date1 = input(compress(date),yymmdd10.);
format date1 date9.;
run;
带有proc sql的代码:
proc sql;
create table test3 as select
*,
input(compress(date),yymmdd10.) format date9. as date1
from test;
quit;
错误消息:
函数COMPRESS需要一个字符表达式作为参数1。 为什么COMPRESS可以同时处理步骤数据和proc sql?
答案 0 :(得分:2)
compress()
函数以相同的方式运行。
但是PROC SQL
不会像数据步骤那样进行自动类型转换。查看数据步骤中的注释。
207 data test2;
208 set test;
209 date1 = input(compress(date),yymmdd10.);
210 format date1 date9.;
211 run;
NOTE: Numeric values have been converted to character values at the places given by:
(Line):(Column).
209:24
只需明确告诉SAS您要将数字20,140,101转换为字符串'20140101',然后将该字符串转换为日期值即可。
input(put(date,z8.),yymmdd8.)