oracle聚合函数XMLAGG⽤法简介
XMLAGG函数语法基本如图,可以⽤于列转⾏,列转⾏函数在oracle⾥有好⼏种⽅法,wm_concat也可以做
这⾥介绍wm_concat是因为XMLAGG实现效果和wm_concat是⼀样的,只是性能⽅⾯不⼀样,注意:XMLAGG最好排序⼀下,性能会好点XMLAGG例⼦:
需要实现⼀个table,有⼀列的效果是:⽤户姓名A(账号a),⽤户姓名B(账号b)...这种格式。这就想到oracle的列转⾏函数。可以⽤类似这种格式(a || '(' || b || ')'),a表⽰⽤户名字段,b表⽰账号字段。
<select id="listAllocatedHandlerInfo" resultType="AllocationHandlerInfoVo">
select XMLAGG(XMLELEMENT(e, bs.user_name || '(' || bs.user_code || ')', ',').extract('//text()'))
.getClobVal(),
sd.step_name approveStep
from t_flow_step fs
left join t_user bs
on fh.handler = bs.user_code
left join t_step_define sd
on fs.step_id = sd.step_id
group by sd.step_name
</select>
查询出来,是⽤,分隔的数据,实现列转⾏显⽰
XMLAGG常⽤语法:
select t.item,
XMLAGG(XMLELEMENT(e, t.rs_name, ',').extract('//text()'))
.getClobVal() 材料名称
from t_itm_rcv_stuff t groupby t.item;
wm_concat会有版本不兼容问题,
oracle列转⾏函数还有listagg,也可以⽤sys_connect_by_path来做,具体根据需求来define的基本用法

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。