listagg() within group 用于将多行转换成一行显示,即行转列,如下示例:
oracle函数行转列函数 listagg() within group_其他

在t7_insurer_function表中可以看到一个insu_code对应多个busi_code字段,这时我想把它们用逗号分割,显示在一行里,这个时候就用到了行转列函数。

SELECT insu_code,listagg(busi_code,',') within group (order by busi_code ) busi_code  
FROM t7_insurer_function 
GROUP BY insu_code ;

结果如下:
oracle函数行转列函数 listagg() within group_其他_02

用法解释如下:

listagg(busi_code,',') within group (order by busi_code ) 第一个参数busi_code表示需要在一行显示的字段,第二个参数表示使用逗号分割多个busi_code,order by busi_code表示排序,以什么样的顺序进行显示;