1.SELECT GROUP_CONCAT( NAME ) FROM TB GROUP BY ID;html
2.SELECTsql
ID,函數
NAME= STUFF ((SELECT ',' + VALUE FROM TB AS T WHERE T .ID = TB.ID FOR XML PATH('')), 1, 1, '')fetch
FROM TBspa
GROUP BY ID.net
//=======================================================================//xml
收集的資料 htm
- --一、sql2000中只能用自定義的函數解決
- 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
-
- create function dbo.f_str(@id varchar(10)) returns varchar(1000)
- as
- begin
- declare @str varchar(1000)
- select @str = isnull(@str + ',' , '') + cast(value as varchar) from tb where id = @id
- return @str
- end
- go
-
- --調用函數
- select id , value = dbo.f_str(id) from tb group by id
-
- drop function dbo.f_str
- drop table tb
-
-
- --二、sql2005中的方法
- 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 id, [value] = stuff((select ',' + [value] from tb t where id = tb.id for xml path('')) , 1 , 1 , '')
- from tb
- group by id
-
- drop table tb
-
-
- --三、使用遊標合併數據
- 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
- declare @t table(id int,value varchar(100))--定義結果集表變量
- --定義遊標並進行合併處理
- declare my_cursor cursor local for
- select id , value from tb
- declare @id_old int , @id int , @value varchar(10) , @s varchar(100)
- open my_cursor
- fetch my_cursor into @id , @value
- select @id_old = @id , @s=''
- while @@FETCH_STATUS = 0
- begin
- if @id = @id_old
- select @s = @s + ',' + cast(@value as varchar)
- else
- begin
- insert @t values(@id_old , stuff(@s,1,1,''))
- select @s = ',' + cast(@value as varchar) , @id_old = @id
- end
- fetch my_cursor into @id , @value
- END
- insert @t values(@id_old , stuff(@s,1,1,''))
- close my_cursor
- deallocate my_cursor
-
- select * from @t
- drop table tb
第一種方式用的是 group_concat()函數
第二種用的是 STUFF()函數+FOR XML PATH()
若果想使用遊標或者SQL版本不同 能夠參考我收集的資料blog