日期:2014-05-17  浏览次数:20958 次

请叫各位,有没有一个类似于一种累积的聚合函数
emp:
  id 
  name
  depart,

1   scott   1
2   tiger   1
3   manager 1

比方说,select str_link(t.name) from emp t where t.depart = 1,
我要查出来的结果是scott,tiger,manager。搜了半天google,不知道怎么用关键字,看各位有么有遇到有这种需求的。


------解决方案--------------------
select deptno,wm_concat(ename) from emp group by deptno;
DEPTNO WM_CONCAT(ENAME)
------ --------------------------------------------
    10 CLARK,KING,MILLER
    20 SMITH,FORD,ADAMS,SCOTT,JONES
    30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD

------解决方案--------------------
报错可能是你的记录太多,拼出来的字符串太长了,或你变量定的太小
------解决方案--------------------
select depart,wm_concat(name)
from emp
group by depart
------解决方案--------------------
引用:
引用:SQL code123456select deptno,wm_concat(ename) from emp group by deptno;DEPTNO WM_CONCAT(ENAME)------ -----------------------------……

应该不是系统自带的,没见过,系统自带的也不会让你看源码了,一般加密过的
------解决方案--------------------
不是自带的  oracle中函数wm_concat()和over()函数用处都比较多 可以多看下
------解决方案--------------------
11gr2之前可以用wm_concat(),11gr2之后可以用LISTAGG函数替代wm_concat函数。
和wm_concat相比,listagg可以执行排序,例如
select deptno, listagg(ename,';') within group(order by ename) enames from emp group by deptno;