由 ORDER BY 引起的 Oracle SQL 子查询语法错误

塞缪尔·P。

我在 Oracle SQL 查询中出现语法错误。查询应该让我知道一个员工的部门。如果员工没有部门(空),我希望第一个经理的部门在层次结构上有一个部门。

SELECT department_id FROM department
WHERE department_id =
(
    SELECT department_id FROM employee
    WHERE department_id IS NOT NULL AND rownum = 1
    start WITH employee_id = 19
    connect by employee_id = prior manager_id
    ORDER BY level
);

错误信息是这样的:

ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:
Error at Line: 8 Column: 2

我写了一个替代查询,它可以完成这项工作。但我对此并不十分满意。

SELECT department_id FROM department
WHERE department_id = 
(
    SELECT department_id FROM employee
    WHERE level =
    (
        SELECT MIN(level) FROM employee
        WHERE department_id IS NOT NULL
        start WITH employee_id = 19
        connect by employee_id = prior manager_id
    )
    start WITH employee_id = 19
    connect by employee_id = prior manager_id
);

您知道如何修复第一个查询吗?还是简化第二个?先感谢您。

大力水手

在您的第一个查询中,@Barbaros 正确地说这ORDER BY是不需要的,甚至rownum = 1不会做您在想的事情。

以下查询是否满足您的要求:

SELECT
    E.EMPLOYEE_ID,
    CASE WHEN E.DEPARTMENT_ID IS NOT NULL 
         THEN E.DEPARTMENT_ID
         ELSE LAG(D.DEPARTMENT_ID IGNORE NULLS) OVER(ORDER BY LEVEL)
    END AS DEPARTMENT_ID
FROM
    EMPLOYEE E
    LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
START WITH E.EMPLOYEE_ID = 19
CONNECT BY E.EMPLOYEE_ID = PRIOR E.MANAGER_ID

干杯!!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

由保留名称引起的SQL语法错误

由SQL语法引起的Xcart错误

由以下原因引起:java.sql.SQLSyntaxErrorException:[...]版本,用于在第1行的'order(id)'附近使用正确的语法

无效语法由+ =引起

由Oracle分层查询中的PRIOR语句放置引起的差异

由markercluster引起的GoogleMap错误

错误的SQL语法引起的SQLException

CakePHP 3.0:Mysql语法错误由名为Group的类引起

如何解决由-Wconversion引起的错误?

由C中的fgets()引起的分段错误

由尚未运行的功能引起的错误

由代码块引起的范围错误值

连接错误(由 NewConnectionError 引起) pipreqs

Netbeans中的Oracle SQL语法错误

与Order By一起使用时,SQL查询中的GROUP BY给出语法错误

由以下原因引起:android.database.sqlite.SQLiteException:在“ org”附近:语法错误(代码1):,而在编译时:

由以下原因引起:java.sql.SQLSyntaxErrorException:SQL语法有错误。检查与您的MySQL服务器版本相对应的手册

缓慢的 Django 页面 - 似乎不是由 SQL 引起的

SQL Server死锁由索引中的范围锁引起

SQL(Teradata):删除由GroupBy / CASE语句引起的NULL

具有左联接语法错误的SQL子查询

随机选择的子查询选择中的sql语法错误

反引号引起SQL查询错误

Oracle SQL子查询错误

SQL查询语法错误?

SQL:查询语法错误

在SQL中串联的字符串变量(用于访问DB),由于引号引起的语法错误?

获取由查询引起的数据变化事件的DML查询

由 AsyncTask 引起的 NotSerializableException