使用oracle内置函数合并多行数据为一行
使用oracle内置函数合并多行数据为一行
一、wm_concat
wm_concat函数是是oracle中常用的函数,功能:行转列,可以将查询出的多行某列值使用逗号进行隔开拼接,成为一条数据。
示例,现在有一张风险表,每个风险项(risk_id)对应有多条规则(risk_rule),现在我要按照风险项把对应的规则都查询出来。
listagg()
函数
基本语法:listagg(xxx,xxx) within group( order by xxx)
可以配合 group by
进行聚合查询,也可以配合 partition by
进行聚合查询。
select
listagg(ri.risk_name, ';') within group(order by ri.risk_name)
as name_list
from t_risk ri
用法说明:
LISTAGG('需要拼接的数据表中的字段','分隔符') WITHIN GROUP( ORDER BY '同前面,需要拼接的数据表中的字段')
用法类似聚合函数,通过Group by语句,把每个Group的一个字段,拼接起来。