MSSQL2005中将多行合并为一行的方法,此方法不再使用sql2000中函数转换的办法


处理前数据:
id  value
1    aa
1    bb
2    aaa
2    bbb
2    ccc
处理后数据

1    aa,bb
2    aaa,bbb,ccc

具体的方法如下(老汉http://blog.csdn.net/laohan8848/):
create table tb(id int, value varchar(10))

insert into tb values(1, 'aa')

insert into tb values(1, 'bb')

insert into tb values(2, 'aaa')

insert into tb values(2, 'bbb')

insert into tb values(2, 'ccc')

go

-- 查询处理

--select * from tb

SELECT * FROM(SELECT DISTINCT id FROM tb)A OUTER APPLY(

        SELECT [values]= STUFF(REPLACE(REPLACE(

            (

                SELECT value FROM tb N

                WHERE id = A.id

                FOR XML AUTO

            ), '<N value="', ','), '"/>', ''), 1, 1, '')

)N


drop table tb

你可能感兴趣的:(sql,xml,table,insert)