数据库:oracle10g
我有一张表如:
id          uuid            name
1            11             张三
2            11             里斯
3            22             王五
4            22             小六想要的结果就是讲uuid相等的name拼接 期望结果如下:
id           uuid           name
1             11           张三,里斯
2             22           王五,小六 
就大神们赐教---------------希望大神们先本地测试、谢谢!!!

解决方案 »

  1.   

    select id=row_number()over(partition by 1 order by getdate()),uuid,stuff((select ','+name from tb tb2 where tb2.uuid=tb1.uuid for xml path('')),1,1,'')name from tb tb1 group by uuid
      

  2.   


    with t1 as
    (
         select '11'c2,'张三' c3 from dual
         union all
         select '11','李四' from dual
         union all
         select '11','王五' from dual
         union all
         select '22','候六' from dual
         union all
         select '22','黄七' from dual
    )select c2,wm_concat(c3) c3
    from t1
    group by c2
        c2          c3
    ---------------------------------------
    1 11 张三,李四,王五
    2 22 候六,黄七
      

  3.   

    你好 、 sql太懂 、上面with t1 as之后能讲下吗?
      

  4.   

    with t1 as创建临时表  相当于你的表  直接运行后面的sql就行了
    select uuid,wm_concat(name) "name"
    from t1
    group by uuid 
      

  5.   

    select c2,wm_concat(diatinct c3) c3
    from t1
    group by c2这样 默认的是 , 如果要替换符号
    可以 用 select c2,replac(wm_concat(diatinct c3),',','-') c3
    from t1
    group by c2
      

  6.   

    如果你的数据库是10g或以上时,可以用WMSYS.WM_CONCAT这个包
    WITH T1 AS
     (SELECT '11' C2, '张三' C3
        FROM DUAL
      UNION ALL
      SELECT '11', '李四'
        FROM DUAL
      UNION ALL
      SELECT '11', '王五'
        FROM DUAL
      UNION ALL
      SELECT '22', '候六'
        FROM DUAL
      UNION ALL
      SELECT '22', '黄七' FROM DUAL)
     SELECT ROWNUM rn,c2,c3 FROM ( SELECT c2,WMSYS.WM_CONCAT(c3) c3 FROM t1
      GROUP BY c2)