长话短说,oracle中的LISTAGG() WITHIN GROUP ()把一列的值合并为一个值,用指定的分隔符隔开,根据条件汇总某些列上的字段,就是根据某些指定的条件,把该列的字段,汇总在行的一个字段里,行转列函数;
需要注意的事项如下:
(1)group by是必须的,必须得分组。
(2)listagg函数的第一个参数是需要显示的字段;第二个参数是数值之间的分隔符;同时还需要进行排序和分组within group (order by 字段名)
举例说明:
select * from userinfo
把上面name的列上的所有值合并在一行一列表示:
select listagg(name, ',') within group( order by name) as name from userinfo