首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Match_recognize的ORA-00933

带有Match_recognize的ORA-00933
EN

Database Administration用户
提问于 2017-04-20 04:04:49
回答 1查看 244关注 0票数 0

我试图找出这个使用MATCH_RECOGNIZE的简单查询是错误的。我正在获得错误ORA-00933: SQL命令没有正确结束。我错过了什么?

代码语言:javascript
复制
    SELECT EMPLOYEE_ID,DEPARTMENT_ID,SALARY FROM EMPLOYEES
MATCH_RECOGNIZE(
PARTITION BY DEPARTMENT_ID
ORDER BY HIRE_DATE
MEASURES 
 EMPLOYEE_ID,DEPARTMENT_ID,SALARY
ONE ROW PER MATCH
PATTERN( A B* )
DEFINE
      B AS ( B.SALARY < PREV(B.SALARY))
)
EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-04-20 04:19:57

当我第一次在SQL*PLUS (Oracle 12.2)上运行您的查询时

代码语言:javascript
复制
SQL>  SELECT EMPLOYEE_ID,DEPARTMENT_ID,SALARY FROM EMPLOYEES
MATCH_RECOGNIZE(
PARTITION BY DEPARTMENT_ID
ORDER BY HIRE_DATE
MEASURES 
 EMPLOYEE_ID,DEPARTMENT_ID,SALARY
ONE ROW PER MATCH
PATTERN( A B* )
DEFINE
      B AS ( B.SALARY < PREV(B.SALARY))
)  2    3    4    5    6    7    8    9   10   11  ;
 EMPLOYEE_ID,DEPARTMENT_ID,SALARY
            *
ERROR at line 6:
ORA-62505: expression needs to be aliased

我没有像你提到的那样得到ORA-0933。但是,当我在Oracle 11.2.0.4上运行您的代码时,我得到了与您说的相同的错误。原因是,MATCH_RECOGNIZE子句仅在Oracle12c中的解析函数语法上添加。

然后在12c,我把错误更正为-

代码语言:javascript
复制
SELECT emp_id,dept_id,SAL FROM EMPLOYEES
MATCH_RECOGNIZE(
PARTITION BY DEPARTMENT_ID
ORDER BY salary
MEASURES 
 EMPLOYEE_ID as emp_id,
 DEPARTMENT_ID as dept_id,
 SALARY as sal
ONE ROW PER MATCH
PATTERN( A B* )
DEFINE
      B AS ( B.salary < PREV(B.salary))
);

它对我来说很完美,至少没有任何语法错误。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/171477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档