Oracle多行数据合并成一行

一、listagg 函数------(有长度限制)

SELECT listagg(待拼接字段, ',') within group(ORDER BY 待拼接字段) AS NAMES FROM 表 GROUP BY 字段

二、用聚合函数,然后使用 wmsys.wm_concat(拼接字段) 方法------(有长度限制,可去重)

select wmsys.wm_concat(distinct t.id) as id from table t group by t.user

无长度限制的方法

select XMLAGG( XMLELEMENT(E, 待拼接字段 || ',') ORDER BY 排序字段 ).EXTRACT('//text()').getclobval() as 别名 from 表名 GROUP BY 分组字段

SELECT rtrim( xmlagg( xmlparse(content 待拼接字段 || ',' wellformed) ORDER BY 排序字段 ).getclobval(), ',') 别名 from 表名 GROUP BY 分组字段 //该方法更快

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐