1、wmsys.wm_concat
Oracle中的wmsys.wm_concat主要实现行转列功能(说白了就是将查询的某一列值使用逗号进行隔开拼接,成为一条数据)。
2、LISTAGG
这是最基础的用法:
LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)
用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来。
非常方便。
同样是聚合函数,还有一个高级用法:
就是over(partition by XXX)
也就是说,在你不实用Group by语句时候,也可以使用LISTAGG函数:
3、实例:
select t1.jsbh,t.* from t_auth_user t,t_auth_user_role t1 where t.yhbh=t1.yhbh order by t.yhbh,t1.jsbh ;
select t.yhbh,listagg(jsbh,',') within GROUP (order by jsbh) js
from t_auth_user t,t_auth_user_role t1
where t.yhbh=t1.yhbh
group by t.yhbh ;
select t.yhbh,wm_concat(t.jsbh) as js from t_auth_user_role t group by t.yhbh ;