Oracle SQL到SAS企业指南

时间:2016-01-04 17:05:07

标签: sas

您好我正在尝试将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应按月执行累积计数,并应每年重新启动。

0 个答案:

没有答案