表  两列 A,B 
A      B
1      a
1      b
1      c
2      a
2      e
2      f
要求用一个sql文
检索出1   a,b,c
2   a,e,f
最好用sql文实现多谢

解决方案 »

  1.   

    with aa as(
    select 1 a, 'a' b from dual union all
    select 1, 'b' from dual union all
    select 1, 'c' from dual union all
    select 2, 'a' from dual union all
    select 2, 'e' from dual union all
    select 2, 'f' from dual )
    select a,wm_concat(b) from aa
    group by a;
      

  2.   

    --wm_concat只能用于10g以上,9i用sys_connect_by_path
    with temp as(
      select 1 A, 'a' B from dual union all
      select 1 A, 'b' B from dual union all
      select 1 A, 'c' B from dual union all
      select 2 A, 'a' B from dual union all
      select 2 A, 'e' B from dual union all
      select 2 A, 'f' B from dual)
    SELECT a.A, ltrim(MAX(sys_connect_by_path(B, ',')), ',') B
      FROM (SELECT row_number() over(PARTITION BY A ORDER BY B) rn, t.* FROM temp t) a
     START WITH rn = 1
    CONNECT BY PRIOR rn = rn - 1 AND
               a.A = PRIOR a.A
     GROUP BY a.A
      

  3.   


     select A,wm_concat(B) B from t group by A;
      

  4.   

    非常感谢大家的 我知道了 其实我要找的是 wm_concat
    但是 这不能解决顺序的问题还是用个数相等 并且 每一个列值都 in 的方式来解决了
      

  5.   

    select a,wm_concat(b) b from (select A,B from t order by a,b) group by a