WITH T AS
(SELECT '1' paytype, 377712 cou, 105598.18 su FROM DUAL
UNION ALL
SELECT '2' paytype, 46634 cou, 839.02 su FROM DUAL
UNION ALL
SELECT '3' paytype, 1778 cou, 25587 su FROM DUAL)
SELECT LTRIM(max(SYS_CONNECT_BY_PATH(T2.cou || ' ' || T2.su, ' ')), ' ') COL
FROM (SELECT T.*, ROW_NUMBER() OVER(ORDER BY T.paytype) AS RN FROM T) T2
START WITH RN = 1
CONNECT BY PRIOR RN = RN - 1
(SELECT '1' paytype, 377712 cou, 105598.18 su FROM DUAL
UNION ALL
SELECT '2' paytype, 46634 cou, 839.02 su FROM DUAL
UNION ALL
SELECT '3' paytype, 1778 cou, 25587 su FROM DUAL)
SELECT LTRIM(max(SYS_CONNECT_BY_PATH(T2.cou || ' ' || T2.su, ' ')), ' ') COL
FROM (SELECT T.*, ROW_NUMBER() OVER(ORDER BY T.paytype) AS RN FROM T) T2
START WITH RN = 1
CONNECT BY PRIOR RN = RN - 1
select wm_concat(aa)
from (select *
from (select paytype || ee aa, paytype
from tab
where rownum < 50)
order by paytype)
但是都是有长度限制的。默认逗号分割,也可以用replace,换成别的。我认为这样的转换最好还是查出后整理的方式,这样更通用。