全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
8996 3
2011-11-11
在SAS在处理数据时,可从数据库中提取明细数据,然后在SAS端来处理和加工;能否利用数据库sql语句自身的函数,在数据端先处理,然后在SAS端进一步加工。比如:oracle 数据库sql语句使用 to_char(datatime,'yyyy-mm-dd')函数:

select  to_char( datatime_var1 , 'yyyy-mm-dd')  data1
from tablename
where  to_char( datatime_var1 , 'yyyy-mm-dd') >= '2011-01-01'

如果直接放在SAS sql 中,运行:
proc  sql ;
create table  table_name as
         select  to_char( datatime_var1 , 'yyyy-mm-dd')  data1
        from tablename
        where  to_char( datatime_var1 , 'yyyy-mm-dd') >= '2011-01-01'   ;
quit;

SAS提示错误信息:没有to_char这个函数。
二维码

扫码加我 拉你入群

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

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

全部回复
2011-11-11 16:06:40
怎么就没有人知道呢
二维码

扫码加我 拉你入群

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

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

2011-11-11 17:12:09
connect to oracle;
类似这样写法的一种连接方式,可以将SAS当作oracle的客户端,直接使用oracle的sql语句
二维码

扫码加我 拉你入群

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

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

2014-1-16 08:42:30
这个问题也困扰过我半天,我把SQLServer里头可运行的sql语句原封不动搬到sas中后不能运行,主要问题出在一些数据库自定义函数上边。由于sas数据类型只有文本型和数值型,数据库中的datetime字段最后也会被映射为数值型(日期表示为与1960年1月1日的相差天数)。

如果要在sas中转让“yyyymmdd”文本型,可以用put(datepart(a.REPORTDATE), yymmddn8.),其中datepart是sas里截取年月日的内嵌函数,put为数据类型转换,当时baidu、google都找不到解决方案,耗费了快1天时间,最后看sas帮助不断试出来的。开始时因为没有套datepart函数,老是报错“日期值越界”,发现是因为datetime包含了时分秒(hh:mm:ss)所导致的。

备注:sas里头的sql其实不完全是标准sql语法,比如可以在字段后边加上label、等限定语句format等,具体看F1帮助说明。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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