Oracle SQL进入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修改为SAS Enterprise Guide,我在按函数进行OVER/PARTITION时遇到了一些问题。我收到一条语法错误消息,有人能给我介绍一下吗?是否可以在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.
输入数据
这是一个新的开始
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 SQL
sum over
在此类型的SQL中无效。这是可以做到的,但是你需要稍微修改一下语法。谢谢@StuSztukowski,你有什么方法可以指导我吗?我是一个SAS的新手用户,到目前为止使用的程序都是内置模块,但这是我第一次使用代码。