Oracle列转行函数listagg和wm_concat

listagg函数

其函数在Oracle 11g 版本中推出,对分组后的数据按照一定的排序进行字符串连接。

//用法如下 分隔符号可以自定义
listagg (字段, ',') WITHIN GROUP (ORDER BY 字段)

现在要把查询出的两列转为一行
Oracle列转行函数listagg和wm_concat_第1张图片

select  listagg (B, ',') WITHIN GROUP (ORDER BY B)  from A WHERE A ='1'

结果如下
Oracle列转行函数listagg和wm_concat_第2张图片

wm_concat函数

其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型。
wm_concat函数默认是以","进行合并的
用法如下

 select wm_concat(B) from A WHERE A ='1'

Oracle列转行函数listagg和wm_concat_第3张图片

注意!!!
当版本是11g,wm_concat函数返回的是clob类型,去重(distinct)的sql中使用wm_concat函数可能会报如下错误,。
Oracle列转行函数listagg和wm_concat_第4张图片
推荐使用listagg函数

你可能感兴趣的:(数据库,sql,数据库)