全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1956 6
2017-06-27

data a;

x=140930378.79;

run;


/*sql创建*/

proc sql noprint;

select x into:d from a;

quit;

%put &d;

/*结果是1.4093E8*/



data _null_;

set a;

call symput('x',x);


run;

%put &x;

/*结果是140930378.79*/



(1)为什么会不一样

(2)有什么办法使sql的结果不出现科学计数法,不然后面运算一定会有问题


二维码

扫码加我 拉你入群

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

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

全部回复
2017-6-27 13:29:18
1 直接用%let 赋值好了呀。

2 因为你在数据步没有定义数值型格式。一个是用字符型格式

3 试着用format定义一个12.3之类的数值格式,效果就出来了(待确认)
二维码

扫码加我 拉你入群

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

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

2017-6-27 13:46:34
sql中,select语句赋值宏变量时,以x的length=8生成了宏变量d(长度为8),由于长度不够,以best.格式存储

data步中,call symput('x',x); x先以best12.的格式从数值转换为字符,再写入宏变量x

用%put %length(&d);%put %length(&x);可以看到2个宏变量的长度不一样。
二维码

扫码加我 拉你入群

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

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

2017-6-27 13:52:48
孤单的我们 发表于 2017-6-27 13:46
sql中,select语句赋值宏变量时,以x的length=8生成了宏变量d(长度为8),由于长度不够,以best.格式存储

...
sql里面用什么办法可以解决呢。因为找一个变量的max值,sql比data更效率,例如下面的语句。如果sql一直这样,我就恶心了。有没有什么好办法
proc sql noprint;
select max(x) into:maxx from test;
quit;
二维码

扫码加我 拉你入群

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

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

2017-6-27 13:55:10
wlfjhh 发表于 2017-6-27 13:52
sql里面用什么办法可以解决呢。因为找一个变量的max值,sql比data更效率,例如下面的语句。如果sql一直这 ...
select put(max(x),best12.) into:maxx from test;
二维码

扫码加我 拉你入群

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

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

2017-6-27 13:58:20
孤单的我们 发表于 2017-6-27 13:55
select put(max(x),best12.) into:maxx from test;
良师!!!!
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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