ORACLE用这个函数listagg 执行时报“ORA-00923: 未找到要求的FROM关键字”

请问下:

SELECT B.ENAME, B.SAL,
LISTAGG(B.ENAME || ':' || B.SAL,'/')WITHIN GROUP(ORDER BY B.SAL )
FROM BONUS B
GROUP BY B.ENAME

select listagg(ename,',')within group(order by sal)name from emp;

select deptno,listagg(ename,',')within group(order by sal)name from emp group by deptno;

select deptno,ename,sal,listagg(ename,',')within group(order by sal)over(partition by deptno)name from emp;

上述代码运行都报““ORA-00923: 未找到要求的FROM关键字” 是怎么回事? 这些表数据库中都有,字段名也没问题

img

listagg是在oracle 11g版本开始添加的一个聚合函数,低于11g版本用不了的

你这语句除了第一个你分组不对不能运行,剩下的在我这都能运行。一模一样,都不带改的。
第一个语句分组不对
SELECT B.ENAME, B.SAL,
LISTAGG(B.ENAME || ':' || B.SAL,'/')WITHIN GROUP(ORDER BY B.SAL )
FROM BONUS B
GROUP BY B.ENAME,B.SAL;
剩下的在我这都能运行

img


有一个聚合函数wm_concat,效果和listagg一样,还更好用

img


你不会是将它们一块运行的吧?

分号表示结束,每个语句后边加上分号

img