日期:2014-05-18  浏览次数:20485 次

【难度】!如何在聚合时,将一列的多行的内容组合起来
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 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, 1, '')
END
GO

-- 调用函数
SELECt id, Info = dbo.f_str(id) FROM tb GROUP BY id

------解决方案--------------------
SQL code
--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可以的