WMSYS.WM_CONCAT: 依赖WMSYS 用户,不同oracle环境时可能用不了,返回类型为CLOB,可用substr截取长度后to_char转化为字符类型 LISTAGG : 11g2才提供的函数,不支持distinct,拼接长度不能大于4000,函数返回为varchar2类型,最大长度为4000.
SQL> create table a as select 1 id,'x' t1 from dual union all select 2,'y' from dual; SQL> create table b as select 1 id,'a' t2 from dual 2 union all select 1,'b' from dual 3 union all select 1,'c' from dual 4 union all select 2,'d' from dual 5 union all select 2,'e' from dual; SQL> select a.id,a.t1,wm_concat(b.t2) list from a,b where a.id=b.id group by a.id,a.t1; ID T1 ---------- --- LIST ------------------------------ 1 x a,c,b 2 y d,e
SQL> select a.id,a.t1,listagg(b.t2,',') within group(order by a.id,a.t1) from a,b where a.id=b.id group by a.id,a.t1; ID T1 ---------- --- LISTAGG(B.T2,',')WITHINGROUP(O ------------------------------ 1 x a,b,c 2 y d,e
|