感觉你不是想进行行转列吧,你是想对多行字段进行拼接? 如果是进行字段拼接给你一下列子: 如果支持wm_concat函数(同ID进行拼接) SELECT T.ID, wm_concat(t.) FROM ABC T GROUP by T.ID;如果不支持: SELECT A.ID, ltrim(MAX(REPLACE(SYS_CONNECT_BY_PATH(MARK, '—'), '—', ',')), ',') FROM (SELECT T.*, ROW_NUMBER() OVER(PARTITION BY T.ID ORDER BY T.MARK) AS RN FROM ABC T) A START WITH RN = 1 CONNECT BY PRIOR RN = RN - 1 AND PRIOR ID = ID GROUP BY ID;
如果是进行字段拼接给你一下列子:
如果支持wm_concat函数(同ID进行拼接)
SELECT T.ID, wm_concat(t.) FROM ABC T GROUP by T.ID;如果不支持:
SELECT A.ID,
ltrim(MAX(REPLACE(SYS_CONNECT_BY_PATH(MARK, '—'), '—', ',')), ',')
FROM (SELECT T.*,
ROW_NUMBER() OVER(PARTITION BY T.ID ORDER BY T.MARK) AS RN
FROM ABC T) A
START WITH RN = 1
CONNECT BY PRIOR RN = RN - 1
AND PRIOR ID = ID
GROUP BY ID;
如果是这样的话,尝试replace(REMARK,chr(10),'、')
11g,listagg
楼主发帖最好说明,数据库环境