有表结构
Columns_A Columns_B
AAA 1111
AAA 2222
BBB 3333
CCC 4444
CCC 5555
1、WM_CONCAT用法
函数在10版本推出,可以把列值以英文逗号分隔起来并显示成一行例如:A,B,C,D 这种格式
运行后的返回结果根据oracle的版本不同而会字段类型不同,在oracle11g中返回clob型,在oracle10g中返回varchar型
用法:WM_CONCAT("列名")
例子:
SELECT T.Columns_A,TO_CHAR(WM_CONCAT(T.Columns_B)) FROM TABLE_NAME T GROUG BY T.COLUMS_A
结果:
AAA 1111,2222
BBB 3333
CCC 4444,5555
2、LISTAGG用法(推荐)
LISTAGG函数是在11g2以后才有的
不支持distinct,拼接长度不能大于4000,函数返回为varchar2类型,最大长度为4000
用法:LISTAGG(columnName,"分隔符") WITHIN GROUP(ORDER BY "排序规则")
例子:
SELECT T.Columns_A ,LISTAGG(T.Columns_B,',') WITHIN GROUP(ORDER BY T.Columns_A) FROM TABLE_NAME T GROUP BY T.Columns_A
结果:
AAA 1111,2222
BBB 3333
CCC 4444,5555