全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1634 4
2016-02-02
悬赏 1 个论坛币 已解决
利用SAS在program中计算Term_Unit的时候,想用SQL写出来,就写出了如下的code:
proc sql;
create table term_unit_sql as
select business_section,subscription_year,subscription_number,vehicle_number,
substr(postal_code,1,1) in ("K","L","M","N","P") THEN Province="ON"
else Province="XX",
TERM_UNIT=ROUND((mdy(input(substr(expiry_date,5,2),2.),
                                        input(substr(expiry_date,7,2),2.),
                                        input(substr(expiry_date,1,4),4.))
                                -mdy(input(substr(effective_date,5,2),2.),
                                        input(substr(effective_date,7,2),2.),
                                        input(substr(effective_date,1,4),4.)))/365.25,.1);
quit;

试过之后Log里面总有这样的错误提示:
substr(postal_code,1,1) in ("K","L","M","N","P") THEN Province="ON"
                                                                   ----
                                                                    22
                                                                    76

ERROR 22-322: Syntax error, expecting one of the following: a quoted string, !, &, ',', AND, AS,
              FORMAT, FROM, INFORMAT, INTO, LABEL, LEN, LENGTH, OR, TRANSCODE, |.
ERROR 76-322: Syntax error, statement will be ignored.


[cry]求解!!

如果在sql中写data step,可以吗? 或者有啥说法??

跪谢跪谢!![em49]

最佳答案

乐天米 查看完整内容

as Provibce 前面加上end ,我忘记了。。
二维码

扫码加我 拉你入群

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

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

全部回复
2016-2-2 05:54:10
乐天米 发表于 2016-2-2 15:49
proc sql;
create table term_unit_sql as
select business_section,subscription_year,subscription_n ...
as Provibce 前面加上end ,我忘记了。。
二维码

扫码加我 拉你入群

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

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

2016-2-2 09:55:47
不应该是case when 叻才能then麽...
二维码

扫码加我 拉你入群

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

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

2016-2-2 15:45:17
你那个P确定不要小写?
二维码

扫码加我 拉你入群

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

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

2016-2-2 15:49:28
proc sql;
create table term_unit_sql as
select business_section,subscription_year,subscription_number,vehicle_number,
case when substr(postal_code,1,1) in ("K","L","M","N","P") then "ON" else "XX" as Province,
ROUND((mdy(input(substr(expiry_date,5,2),2.),
                                         input(substr(expiry_date,7,2),2.),
                                         input(substr(expiry_date,1,4),4.))
                                 -mdy(input(substr(effective_date,5,2),2.),
                                         input(substr(effective_date,7,2),2.),
                                         input(substr(effective_date,1,4),4.)))/365.25,.1) as TERM_UNIT
from  哪一个dataset;
quit;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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