您好我正在尝试将Proc Sql改编为SAS企业指南,我在使用OVER / PARTITION BY功能时遇到了一些问题。我收到语法错误消息,有人可以指导我这个吗?是否可以在SAS上运行它?
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.
OUTPUT DATA
Año Mes Tabla_Origen siniestros_total
2013 1 A1 1
2013 3 A1 2
2013 5 A1 2
2013 6 A1 3
2013 8 A1 4
2014 1 A1 1
2014 4 A1 2
2014 5 A1 3
2014 6 A1 4
2013 2 A2 1
2013 4 A2 2
2013 6 A2 3
2014 9 A2 1
2014 12 A2 2
INPUT DATA
Año Mes Nro_Siniestro Fecha_Pago Tabla_Origen
2013 1 1234 01/1/2013 A1
2013 3 1235 01/3/2013 A1
2013 5 1235 01/5/2013 A1
2013 6 1236 01/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 1236 01/6/2013 A2
2014 9 1240 01/9/2014 A2
2014 12 1241 01/12/2014 A2
列siniestros_total应按月执行累积计数,并应每年重新启动。