SQL server 数据库中,如何将分组后元素用逗号隔开并作为一条记录?

如上图所示,从表T1转换到表T2。按T1中MID分组,分组后每组元素用逗号隔开并作为一条记录存放到表T2中,而且去除重复的元素。我知道在Oracle中有现成的函数,但是不太清楚SQL Server如何操作。还得请大神帮忙,多谢啦!

创建表及数据

create table t1
(mid int,
uid varchar(1))
insert into t1 values (1,'a')
insert into t1 values (1,'b')
insert into t1 values (1,'b')
insert into t1 values (1,'c')
insert into t1 values (1,'d')
insert into t1 values (2,'a')
insert into t1 values (2,'b')
insert into t1 values (2,'c')
insert into t1 values (2,'c')
insert into t1 values (3,'a')
insert into t1 values (3,'b')
insert into t1 values (3,'c')
insert into t1 values (3,'c')

 

执行

select mid, items=stuff((select ','+uid from (select distinct mid,uid from t1) t where mid=s.mid for xml path('')), 1, 1, '')  
from (select distinct mid,uid from t1) s
group by mid

 

 

结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-14
sqlserver2005以上版本
select mid,stuff((select distinct ','+uid from t1 where a.mid=mid for xml path('')),1,1,'')items
from t1 a group by mid
相似回答