【问题标题】:Not able to use LISTAGG无法使用 LISTAGG
【发布时间】:2018-11-26 10:55:13
【问题描述】:
SELECT deptno, LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees
FROM   emp
GROUP BY deptno;
Error:- 
ORA-00923: FROM keyword not found where expected
00923. 00000 -  "FROM keyword not found where expected"
*Cause:    
*Action:
Error at Line: 1 Column: 42

Oracle 数据库 11g 企业版版本 11.1.0.7.0 - 64 位生产

【问题讨论】:

  • 请详细说明错误。当我在 11g 数据库上执行查询时,它显示的结果没有任何错误
  • 很可能,数据库版本不是 11g 或更高版本。 wm_concatLISTAGG 的替代品
  • 我同意@Jacob - 您使用的是哪个版本的 Oracle?
  • Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

标签: sql oracle oracle11g listagg


【解决方案1】:

this article 中,您有不同的方法来处理字符串聚合,包括如果您运行的是 11g 第 2 版之前的 Oracle 版本(这是您的方案)时要考虑的方法。

特别是可以使用Oracle的WM_CONCAT函数:

SELECT deptno, wm_concat(ename) AS employees
FROM   emp
GROUP BY deptno;

您还可以定义自己的字符串聚合函数或使用其他函数,例如SYS_CONNECT_BY_PATHCOLLECT。在上面的文章中,您有这些方法的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多