使用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的一个字段,拼接起来。

 
 

 

posted @ 2023-07-14 10:47  麦麦提敏  阅读(1120)  评论(0编辑  收藏  举报