0

当我对 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 关键字

什么可能导致错误出现?

4

3 回答 3

12

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

select * from v$version;

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

来自“Oracle 数据库 11g 第 2 版 (11.2) 数据仓库中的新特性”

分析函数

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

于 2016-02-22T20:11:13.517 回答
1

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

但是,您有一个聚合函数,因此您需要正确的列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 表达式)”。

于 2016-02-22T20:01:13.930 回答
-3

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

SELECT CATEGORY,ANTIGENNAME,LATINCOMPOSITION,HYCORCODE,FDACLEARANCE,
    LISTAGG(ORCHARDCODE, ';')
     WITHIN GROUP (ORDER BY ORCHARDCODE) as "code"
 from tablename
 group by HYCORCODE
于 2016-02-22T19:56:13.317 回答