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

解决方案 »

  1.   

    1楼挺好也可以
    select wm_concat(aa)
      from (select *
              from (select paytype || ee aa, paytype
                      from tab
                     where rownum < 50)
             order by paytype)
    但是都是有长度限制的。默认逗号分割,也可以用replace,换成别的。我认为这样的转换最好还是查出后整理的方式,这样更通用。