Oracle wm_concat()函数 及排序

今天在项目中修改了一个sql 

select t.dmid bmid,wm_concat(m.xm) fgld from gg_user m,gg_dmnr_qx t where m.id = t.czyid group by dmid

 

这个函数也够把符合条件的几条数据的某一列 合并成一条数据中的某一列

比如上面这个sql 

就是把gg_dmnr_qx 表里的数据根据dmid 分组  把对应的user表里的xm 拼接成一行

我所做的修改是要把xm 按照顺序排列再拼接

改造后的sql为

select t.dmid bmid,wm_concat(m.xm) over (partition by dmid order by m.sxh) fgld from gg_user m,gg_dmnr_qx t where m.id = t.czyid 

改造之后的数据过多  并没有分组

在外层套一个max(fgld)即可

最终sql

select bmid,max(fgld)from(select t.dmid bmid,wm_concat(m.xm) over (partition by dmid order by m.sxh) fgld from gg_user m,gg_dmnr_qx t where m.id = t.czyid )

 

注意:wm_concat ()函数无法在Oracle12中使用

 

 

 

你可能感兴趣的:(Oracle wm_concat()函数 及排序)