【难度】!如何在聚合时,将一列的多行的内容组合起来 40hb1122]

发布时间:2014-1-1 0:09:47
来源:分享查询网

本帖最后由 hb1122 于 2011-06-17 19:08:51 编辑 RT! ID Info --------------------- 1,'aa' 1,'bb' 1,'cc' 结果 ID info --------------- 1,'aa bb cc ' 请不吝赐教

--sql2005 select id, Info=stuff((select ','+ltrim(Info) from tb a where a.id=tb.id for xml path('')),1,1,'') from tb  group by id --sql2000使用自定义函数

--sql 2000 CREATE FUNCTION dbo.f_str(@id int) RETURNS varchar(8000) AS BEGIN   DECLARE @r varchar(8000)   SET @r = ''   SELECT @r = @r + ',' + Info FROM tb WHERE id=@id   RETURN STUFF(@r, 1, 1, '') END GO -- 调用函数 SELECt id, Info = dbo.f_str(id) FROM tb GROUP BY id

--sql2005 select id, Info=stuff((select ' '+ltrim(Info) from tb a where a.id=tb.id for xml path('')),1,1,'') from tb   group by id

汗! 能用一条查询语句直接做么?

上面2005可以的

可惜是2000

那只有使用自定义函数了

该回复于2011-06-18 08:28:15被版主删除

如果是这样,那我就在程序里组合一下得了

引用 2 楼 cd731107 的回复:SQL code --sql 2000 CREATE FUNCTION dbo.f_str(@id int) RETURNS varchar(8000) AS BEGIN   DECLARE @r varchar(8000)   SET @r = ''   SELECT @r = @r + ',' + Info FROM tb WHERE id=@id   RETURN STUFF(@r, 1……为啥SELECT @r = @r + ',' + Info FROM tb WHERE id=@id这句话能把等于@id的info列聚合呢?没太想明白

返回顶部
查看电脑版