首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

表中某一列拼凑 大神请进~

2013-01-22 
表中某一列拼接大神请进~~~~~~~~数据库:oracle10g我有一张表如:iduuidname111张三211里斯322王五422小六想

表中某一列拼接 大神请进~~~~~~~~
数据库:oracle10g
我有一张表如:
id          uuid            name
1            11             张三
2            11             里斯
3            22             王五
4            22             小六

想要的结果就是讲uuid相等的name拼接 期望结果如下:
id           uuid           name
1             11           张三,里斯
2             22           王五,小六 


就大神们赐教---------------希望大神们先本地测试、谢谢!!!
[解决办法]
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
[解决办法]


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
---------------------------------------
111张三,李四,王五
222候六,黄七

[解决办法]
with t1 as创建临时表  相当于你的表  直接运行后面的sql就行了


select uuid,wm_concat(name) "name"
from t1
group by uuid

 
[解决办法]
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


[解决办法]
如果你的数据库是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)

热点排行