【问题标题】:Oracle SQL Error: ORA-00923: From Keyword not found where expectedOracle SQL 错误: ORA-00923: From Keyword not found where expected
【发布时间】:2016-02-22 19:39:57
【问题描述】:

当我对 Oracle 使用以下 sql 命令时:

SELECT CATEGORY,ANTIGENNAME,LATINCOMPOSITION,HYCORCODE,FDACLEARANCE, LISTAGG(ORCHARDCODE, ';')
    WITHIN GROUP (ORDER BY ORCHARDCODE) as code
from tablename
group by HYCORCODE

我似乎遇到了 ORA-00923 错误:

ORA-00923:在预期的地方找不到 FROM 关键字

什么可能导致错误出现?

【问题讨论】:

  • 我们并不都凭记忆知道 Oracle 错误代码,请发布完整的错误消息;)另外,无关的,我相信你会得到另一个错误,因为你没有得到group by 子句中有足够的列;)
  • 对不起,这是 ORA-00923: FROM 关键字未在预期的地方找到
  • 11g 的具体 Oracle 版本是什么? Listagg 仅在 Release2 中受支持。
  • 让我问问管理员。我不确定版本是什么。
  • 它是 oracle 8g 所以我猜 LISTAGG 函数不起作用。

标签: sql oracle oracle8


【解决方案1】:

LISTAGG 在您的 Oracle 版本中不可用。使用以下语句检查您的版本:

select * from v$version;

LISTAGG 仅适用于 >= 11 的版本。2.x

来自"Oracle Database 11g Release 2 (11.2) New Features in Data Warehousing"

分析函数

引入了新的 SQL 分析函数,使您能够列出(或连接)组内的度量值 (LISTAGG)。

【讨论】:

    【解决方案2】:

    code不是保留字,所以我认为不需要引用(见here)。

    但是,您有一个聚合函数,因此您需要 group by 中的正确列:

    SELECT CATEGORY, ANTIGENNAME, LATINCOMPOSITION, HYCORCODE, FDACLEARANCE, 
           LISTAGG(ORCHARDCODE, ';') WITHIN GROUP (ORDER BY ORCHARDCODE) as code
    from tablename
    group by CATEGORY, ANTIGENNAME, LATINCOMPOSITION, HYCORCODE, FDACLEARANCE;
    

    这绝对解决了您的查询问题。我不确定它是否会解决您的特定错误。当我从 group by 中省略列时,我得到“ORA-00979(不是 GROUP BY 表达式)。”

    【讨论】:

    • 赞成超越 OP 报告的即时错误并指出其他必须修复的问题。
    【解决方案3】:

    可能与标识符有关尝试使用“代码”

    SELECT CATEGORY,ANTIGENNAME,LATINCOMPOSITION,HYCORCODE,FDACLEARANCE,
        LISTAGG(ORCHARDCODE, ';')
         WITHIN GROUP (ORDER BY ORCHARDCODE) as "code"
     from tablename
     group by HYCORCODE
    

    【讨论】:

    • 我试过了,但我仍然收到消息 FROM keyword not found where expected
    • @KevinDavis - 如果您尝试过但没有成功,为什么这个答案被标记为“正确”?这不是正确的答案; code 不是 Oracle 的保留字,因此不会引起问题。显然,Trincot 给出了正确的答案:您的 Oracle 版本中不存在 LISTAGG。将答案随机标记为“正确”对任何人都没有帮助。
    • @KevinDavis 删除接受的答案..这个答案不是正确的答案..只是一个建议..
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多