gpt4 book ai didi

sql - ORACLE 中的 LISTAGG

转载 作者:行者123 更新时间:2023-12-04 18:25:54 24 4
gpt4 key购买 nike

我正在尝试使用 LISTAGG() 来获取超过两列。

SELECT deptname, deptno, LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees 
FROM emp
GROUP BY deptno;

但是它抛出了这个错误:

: FROM keyword not found where expected
00000 - "FROM keyword not found where expected"
*Cause:
*Action:
Error at Line: 3 Column: 12

有人能解释一下这是为什么吗?

最佳答案

LISTAGG 分析函数是在 Oracle 11g Release 2 中引入的。因此,如果您使用的是旧版本,您将无法使用它。

这个错误看起来很奇怪。您实际上应该得到 ORA-00904: "DEPTNAME": invalid identifier 因为 SCOTT 模式中的标准 EMP 表没有 DEPTNAME 列。此外,您应该得到 ORA-00979: not a GROUP BY expression,因为您没有在 GROUP BY 表达式中提及 SELECTed 列。

SCOTT 架构中使用标准 EMP 表:

SQL> SELECT deptno,
2 job,
3 LISTAGG(ename, ',') WITHIN GROUP (
4 ORDER BY ename) AS employees
5 FROM emp
6 GROUP BY deptno,
7 job;

DEPTNO JOB EMPLOYEES
---------- --------- ------------------------
10 CLERK MILLER
10 MANAGER CLARK
10 PRESIDENT KING
20 CLERK ADAMS,SMITH
20 ANALYST FORD,SCOTT
20 MANAGER JONES
30 CLERK JAMES
30 MANAGER BLAKE
30 SALESMAN ALLEN,MARTIN,TURNER,WARD

9 rows selected.

SQL>

关于sql - ORACLE 中的 LISTAGG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35058645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com