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

怎么将一个列不同的值和成一个值

2013-09-05 
请教高手如何将一个列不同的值和成一个值我有一张这样的表字段1字段2a张三a李四b张三b王五c王五需要得到下

请教高手如何将一个列不同的值和成一个值
我有一张这样的表
字段1    字段2
a        张三
a        李四
b        张三
b        王五
c        王五

需要得到下列的表
字段1     字段2
a         张三,李四
b         张三,王五
c         王五
[解决办法]


WITH a1([字段1],[字段2]) AS
(
SELECT 'a','张三' UNION ALL
SELECT 'a','李四' UNION ALL
SELECT 'b','张三' UNION ALL
SELECT 'b','王五' UNION ALL
SELECT 'c','王五'
)
SELECT [字段1],[字段2]=STUFF(
(SELECT ','+[字段2] FROM a1 WHERE [字段1]=a.[字段1] FOR XML PATH('')),1,1,'')
FROM a1 a
GROUP BY [字段1]

[解决办法]
declare @tb table(col1 varchar(10),col2 varchar(10))
insert into @tb(col1,col2)
select 'a','张三'
union all select 'a','李四'
union all select 'b','张三'
union all select 'b','王五'
union all select 'c','王五'

select a.col1,
stuff((select ','+col2 from @tb b 
       where a.col1=b.col1 for xml path('')),1,1,'') 'col2'
from @tb a
group by  col1

/*
col1col2
a张三,李四
b张三,王五
c王五
*/

热点排行