一共三个方法(也可以自己手写自定义函数实现):
第一种方法,wmsys.wm_concat,oracle 10g推出的函数,用‘,’来链接字符串
写法:select pk,wmsys.wm.concat(columnA) from dual group by pk
-------------------------------
第二种写法,LISTAGG,是oracle11g推出的函数,同用‘,’来链接字符串
写法:select pk,LISTAGG(columnA,',') withinGRO(order by columnA) from dual group by pk;
-------------------------------------
但是以上这两种行转列方法都会有字段长度限制,超过4000字节就会报错,sql执行不下去
网上浏览得知一种方法,可以使用XML函数来解决这个问题
写法:
select PK,XMLAGG(XMLELEMENT(E, COLUMNA || ',')).EXTRACT('//text()').getclobval() as COLUMNA from dual GROUP BY PK
这种方法写出来的数据好像并不能直接浏览,只能通过点击进行弹框浏览,但是可以直接拿来使用