首页 > 数据库技术 > 详细

【Oracle】多行数据合并为一行,使用逗号分隔

时间:2020-05-28 14:44:01      阅读:199      评论:0      收藏:0      [点我收藏+]

现有emp表,表结构如下:
技术分享图片

1.需求描述

现在需要将表emp的字段按照字段顺序依次拼接为一行,最终效果如下:
技术分享图片

2.实现方法

2.1 通过listagg函数实现

select a.table_name,listagg(column_name,‘,‘) within group(order by column_id) as res
from user_tab_columns a where table_name=‘EMP‘
group by a.table_name;

2.2 通过wmsys.wm_concat实现

首先,我们使用常规的写法

select a.table_name, wmsys.wm_concat(a.column_name) 
from user_tab_columns a where table_name=‘EMP‘
group by a.table_name;

执行结果如下图:
技术分享图片

从结果可以清晰的发现,上述结果虽然连接在一起了,但是并没有按照字段顺序排序,那么需要排序的话,就得添加over

select table_name, max(res) from (
select a.table_name, 
wmsys.wm_concat(a.column_name) over(partition by a.table_name order by a.column_id) as res
from user_tab_columns a where table_name=‘EMP‘)
group by  table_name;

【Oracle】多行数据合并为一行,使用逗号分隔

原文:https://www.cnblogs.com/OliverQin/p/12980625.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!