c1       c2     c3(position)
FP2 FYLB 2
FP2 FPH 1
FP2_TF YFPH 1
FP2_TF FYLB 2
GFZDMX  ZDDH    1
GFZDMX  ZDBZ    2
GFZDMX  FYLB    3
想问查询出以下结果的SQL怎么写啊..C1        C2         
FP2      FYLB,FPH    
FP2_TF   YFPH,FYLB
GFZDMX   ZDDH,ZDBZ,FYLB

解决方案 »

  1.   

    select c1,wmsys.wm_concat(c2)
    from t
    group by c1;
      

  2.   


    SELECT c1,
           LTRIM(MAX(SYS_CONNECT_BY_PATH(c2,','))   
           KEEP (DENSE_RANK LAST ORDER BY curr),',') AS c2  
    FROM (
    SELECT m.c1,m.c2,m.c3
           ROW_NUMber() over(PARTITION BY m.c1 ORDER BY m.c3)AS curr,
           ROW_NUMber() over(PARTITION BY m.c1 ORDER BY m.c3)-1 AS prev
      FROM your_table m)
      GROUP BY c1 
      CONNECT BY prev = PRIOR curr 
      AND c1 = PRIOR c1
      START WITH curr = 1;
     
      

  3.   

    select c1,wmsys.wm_concat(c2) 
    from t 
    group by c1;
      

  4.   


    顶vc555,只是不知道这个vm_concat对资源的占用情况如何啊?
      

  5.   

    Oracle 10g提供的函数wmsys.concat学习!~2楼 9i版本的据说成本很高,等高手解答5楼的问题