表结构
id name
1 罗涛
1 涛帅帅
2 刘亮
2 亮哥
2 亮傻
要得出结果
id name
1 罗涛,涛帅帅
2 刘亮,亮哥,亮傻
google行转列哈
--建立测试环境
Create table BWTEST
(
id Int,
name Varchar(10)
)
GO
--插入数据
Insert BWTEST Values(1,'罗涛')
Insert BWTEST Values(1,'涛帅帅')
Insert BWTEST Values(2,'刘亮')
Insert BWTEST Values(2,'亮哥')
Insert BWTEST Values(2,'亮傻')
GO
--创建函数
Create Function Getb(@id Int)
RETURNS Varchar(8000)
AS
BEGIN
DECLARE @s Varchar(8000)
SET @s= ''
SELECT @s=@s+','+name FROM BWTEST WHERE id=@id ;
RETURN @s
END
GO
--测试
Select id, Substring(dbo.Getb(id),2,LEN(dbo.Getb(id))-1) as name from BWTEST Group By id;
--删除测试环境
Drop Function Getb
Drop table BWTEST
--结果
/*
id name
----------- --------
1 罗涛,涛帅帅
2 刘亮,亮哥,亮傻
*/
楼主试试这个:
--test1 为表名
select id, stuff(
(
select ','+name
from test1 t2
where t2.id=t1.id
for xml path('')
),1,1,'') name
from test1 t1
group by id
我晕,和天行健大哥的重复了.