SQL Oracle LEFT JOIN 和 SUBQUERY 错误 : ORA-00905: missing keyword

标签 sql oracle subquery left-join ora-00905

请求您对此 Oracle 查询的帮助。它给了我错误 2“ORA-00905:缺少关键字”。在我添加 LEFT JOIN 语句之前它工作正常。显然,如果没有 LEFT JOIN 语句,它将无法提供我们需要的信息。

请提供任何帮助以了解此查询中缺少哪个关键字

非常感谢!:

数据库表:
DW.TICKETS
DW.TICKET_ACTLOG

子查询表:
TABLE_RESOLVERS

SELECT 
    TO_CHAR(DW.TICKETS.RESOLVED_TIMESTAMP,'YYYY-MM-DD HH24:MI:SS') AS RESOLVED_DATE, 
    DW.TICKETS.SUBJECT, DW.TICKETS.OWNER_CORE_ID, 
    DW.TICKETS.TICKET_NUMBER, 
    TABLE_RESOLVERS.SUBMITTER AS RESOLVER_CORE_ID 

FROM DW.TICKETS 

LEFT JOIN
    (SELECT 
        TICKET_NUMBER,
        SUBMITTER 
    FROM DW.TICKET_ACTLOG 
    WHERE 
        TYPE = 'Final Resolution' AND 
        (SUBMITTER = 'B02666' OR 
        SUBMITTER = 'R66604') 
    ORDER BY CREATE_TIMESTAMP DESC 
    ) AS TABLE_RESOLVERS 

ON DW.TICKETS.TICKET_NUMBER = TABLE_RESOLVERS.TICKET_NUMBER  

WHERE 
    DW.TICKETS.RESOLVED_TIMESTAMP >= to_date('05-03-2010','dd-mm-yyyy') AND 
    DW.TICKETS.RESOLVED_TIMESTAMP < to_date('8-03-2010','dd-mm-yyyy') AND 
    DW.TICKETS.TICKET_NUMBER LIKE 'TCK%' AND 
    DW.TICKETS.TICKET_NUMBER IN 
        (SELECT TICKET_NUMBER 
        FROM DW.TICKET_ACTLOG 
        WHERE 
            (SUBMITTER = 'B02666' OR 
            SUBMITTER = 'R66604') 
        ) 

ORDER BY DW.TICKETS.CREATE_TIMESTAMP ASC

最佳答案

在 Oracle 中,我们不包括 AS声明表别名时。代替

    ) AS TABLE_RESOLVERS 
   ) TABLE_RESOLVERS 
这是 Oracle 语法比其他一些 SQL 风格更严格的示例。它也与列别名的声明不一致,这是不幸的,但几乎可以肯定的是,在这条路上改变这么远太复杂了。

关于SQL Oracle LEFT JOIN 和 SUBQUERY 错误 : ORA-00905: missing keyword,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2568893/

相关文章:

php - 通过检查MySQL中其他三个表的信息来更新表的记录

mysql - 嵌套的 MySQL 查询

mysql - 在 LEFT JOIN 之前使用变量值限制 MySQL 子查询

mysql - 使用 MySQL 中的子查询减去一周前的数据

SQL INNER JOIN 更新不重复行

php - 如何获取从今天开始的记录?

vb.net - 无法在合并语句中捕获错误

sql - Oracle SQL获取商店分店和分店最大销售额的产品类别

sql - Oracle SQL - 不在子查询中

mysql - 使用子查询的查询需要返回原始查询中的所有行(即使子查询返回空)