首页 新闻 搜索 专区 学院

SQL技术支持

0
悬赏园豆:20 [已解决问题] 解决于 2012-05-28 15:19

  表结构 

   id      name
    1       罗涛
    1       涛帅帅
    2       刘亮
    2       亮哥
    2       亮傻

 

    要得出结果

    id         name
    1       罗涛,涛帅帅
    2       刘亮,亮哥,亮傻

1行受影响的主页 1行受影响 | 初学一级 | 园豆:113
提问于:2011-02-17 09:33
< >
分享
最佳答案
0

google行转列哈

收获园豆:20
cnb_mtime | 初学一级 |园豆:58 | 2011-02-17 09:47
其他回答(2)
0

--建立测试环境
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 刘亮,亮哥,亮傻
*/

artwl | 园豆:16526 (专家六级) | 2011-02-17 10:06
辛苦了。谢
支持(0) 反对(0) 1行受影响 | 园豆:113 (初学一级) | 2011-02-17 10:10
还有个不用写函数的方法: SELECT id,STUFF((SELECT ','+name FROM BWTEST WHERE id=BW.id FOR xml path('')),1,1,'') AS name FROM BWTEST BW GROUP BY id; 注:BWTEST为表名
支持(0) 反对(0) artwl | 园豆:16526 (专家六级) | 2011-02-17 10:18
@天行健 自强不息: 正解
支持(0) 反对(0) John29 | 园豆:825 (小虾三级) | 2011-02-17 10:52
0

楼主试试这个:

 

--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

 

我晕,和天行健大哥的重复了.

Localhost | 园豆:443 (菜鸟二级) | 2011-02-17 11:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册