Oracle SQL进入SAS企业指南
您好,我正在尝试将Proc Sql修改为SAS Enterprise Guide,我在按函数进行OVER/PARTITION时遇到了一些问题。我收到一条语法错误消息,有人能给我介绍一下吗?是否可以在SAS上运行此操作Oracle SQL进入SAS企业指南,sas,Sas,您好,我正在尝试将Proc Sql修改为SAS Enterprise Guide,我在按函数进行OVER/PARTITION时遇到了一些问题。我收到一条语法错误消息,有人能给我介绍一下吗?是否可以在SAS上运行此操作 proc sql; create table NACIONAL as select distinct AÑO, MES, TAB
proc sql;
create table NACIONAL as
select distinct AÑO,
MES,
TABLA_ORIGEN,
Sum(Sum(flag)) OVER ( partition BY AÑO
ORDER BY MES rows UNBOUNDED PRECEDING) AS siniestros_total
FROM (SELECT NRO_SINIESTRO,
MES,
AÑO,
CASE
WHEN Extract(month FROM MES) = Min (Extract(month FROM MES)
OVER (partition BY NRO_SINIESTRO, Extract(year FROM AÑO))
THEN 1
ELSE 0
END AS flag
FROM work.Universe2
GROUP BY AÑO, MES, NRO_SINIESTRO) AS dt
QUIT;
NOTE 137-205: Line generated by the invoked macro "FRECUENCIAPAGOS".
311 TABLA_ORIGEN; QUIT; proc sql; create table NACIONAL as select distinct
311 ! AÑO, MES, TABLA_ORIGEN, Sum(Sum(flag)) OVER ( partition BY AÑO
____
22
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, ',', -, /, <, <=, <>, =, >, >=, ?, AND, BETWEEN,
CONTAINS, EQ, EQT, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=.
NOTE: Line generated by the invoked macro "FRECUENCIAPAGOS".
311 TABLA_ORIGEN; QUIT; proc sql; create table NACIONAL as select distinct
311 ! AÑO, MES, TABLA_ORIGEN, Sum(Sum(flag)) OVER ( partition BY AÑO
____
76
ERROR 76-322: Syntax error, statement will be ignored.
输入数据
这是一个新的开始
2013 1 1234 01/1/2013 A1
2013 3 1235 01/3/2013 A1
2013 5 1235 01/5/2013 A1
2013年6月123601/6/2013 A1
2013 8 1237 01/8/2013 A1
2014 1 1238 01/1/2014 A1
2014 4 1235 01/4/2014 A1
2014 5 1236 01/5/2014 A1
2014 6 1239 01/6/2014 A1
2013 2 1233 01/2/2013 A2
2013 4 1235 01/4/2013 A2
2013年6月123601/6/2013 A2
2014 9 1240 01/9/2014 A2
2014 12 1241 01/12/2014 A2
您不能在PROC SQL中使用这些语句。您能用示例输入和输出记录解释查询在做什么吗?然后有人可以建议如何在SAS代码中执行此操作。请注意,SAS将自动使用group by统计信息重新合并详细信息记录。因此,如果您只想将group sum()复制到每个细节行,那么只需请求它。例如,请尝试:select*,mean(age)as gender\u mean\u age from sashelp.class group by sex
如果您可以直接访问服务器,则可以使用SQL传递,将SQL命令传递给服务器。否则,Oracle SQL与SAS SQL不同,您的代码需要修改才能在SAS中工作。@Tom,我已用输入和输出数据更新了我的问题,如果有不清楚的地方,请告诉我,谢谢您花时间帮助我。这种特定类型的代码不能直接在SAS中运行。它需要转换为SAS SQLsum over
在此类型的SQL中无效。这是可以做到的,但是你需要稍微修改一下语法。谢谢@StuSztukowski,你有什么方法可以指导我吗?我是一个SAS的新手用户,到目前为止使用的程序都是内置模块,但这是我第一次使用代码。