oracle聚合函数XMLAGG用法简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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, er_name || '(' || er_code || ')', ',').extract('//text()'))
.getClobVal(),
sd.step_name approveStep
from t_flow_step fs
left join t_user bs
on fh.handler = er_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来做,具体根据需求来。