合并列值
示例数据
DECLARE @t TABLE(id int, value varchar(10))
INSERT @t SELECT 1, 'aa'
UNION ALL SELECT 1, 'bb'
UNION ALL SELECT 2, 'aaa'
UNION ALL SELECT 2, 'bbb'
UNION ALL SELECT 2, 'ccc'
--SQL2005 查询处理
SELECT * FROM( SELECT DISTINCT id FROM @t )A
OUTER APPLY( SELECT [values]= STUFF(REPLACE(
REPLACE( ( SELECT value FROM @t N WHERE id = A.id FOR XML AUTO ), '<N value="', ','),
'"/>', ''), 1, 1, '') )N
--查询处理, 写一个聚合函数:
create function dbo.f_str(@id int)
returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+value from table where id=@id
return stuff(@r,1,1,'')
end
go
-- 调用函数
select id, values=dbo.f_str(id) from table group by id