全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6574 3
2010-12-02
proc sql noprint;
  select date1 into : date from bargaindate where i=1;
quit;

是不是date1一定是要数值型,当date1为09MAY2005的时候,就报以下错误:

NOTE: 由宏变量“DATE”生成行。
1     09MAY2005
        -------
        22
ERROR 22-322: 语法错误,期望下列之一: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, ><, >=, AND, EQ, GE, GT, IN, LE, LT, MAX, MIN,
              NE, NG, NL, NOTIN, OR, ^=, |, ||, ~=.

请各位大侠看看怎么解决,谢啦。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-12-2 17:28:58
这一段没问题。


LOG:
=========================================================================
1    data bargaindate;
2       i=1; date1="09MAY2005";
3    run;

NOTE: The data set WORK.BARGAINDATE has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.64 seconds
      cpu time            0.06 seconds


4
5    proc sql noprint;
6      select date1 into : date from bargaindate where i=1;
7    quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.26 seconds
      cpu time            0.03 seconds


8    %put &date;
09MAY2005
=========================================================================
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-2 17:38:23
SAS中日期时间值也是规定为数值型。使用sql创建宏变量,与原变量类型没关系的,可能是你没有指定合适的日期读入格式。下面的示例供参考:
data a;
input x m $ y $ z;
informat x date7.;
cards;
01jan08 01feb08 a 11
03mar08 02aug08 b 12
;
proc sql noprint;
select x,m,y,z
into :x1-:x2,
    :m1-:m2,
    :y1-:y2,
    :z1-:z2
from a;
quit;
%put &x1 &m1 &y1 &z1;
%put &x2 &m2 &y2 &z2;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-2 18:02:33
谢谢两位。

按道理应该没问题啊,我数据是从数据库里直接读的,其它应用也没问题。

原格式是DATETIME22.3不行, 改成DATE9.也不行。

只好想了个变通的办法做了,太奇怪了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群