描述:將如下形式的資料按id欄位合併value欄位。
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到結果:
id value
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即:group by id, 求 value 的和(字串相加)
*/--1、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')
gocreate function dbo.f_str(@id int) returns varchar(100)
asbegin
declare @str varchar(1000)
set @str = ''
select @str = @str + ',' + cast(value as varchar) from tb where id = @id
set @str = right(@str , len(@str) - 1)
return @str
endgo
--呼叫函式
select id , value = dbo.f_str(id) from tb group by id
drop function dbo.f_str
drop table tb
--2、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')
goselect 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
--3、使用游標合併資料
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')
godeclare @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
endfetch my_cursor into @id , @value
endinsert @t values(@id_old , stuff(@s,1,1,''))
close my_cursor
deallocate my_cursor
select * from @t
drop table tb
帖子整理
sqlserver字串合併 merge 方法彙總
方法1 使用游標法進行字串合併處理的示例。處理的資料 create table tb col1 varchar 10 col2 int insert tb select a 1 union all select a 2 union all select b 1 union all select b ...
sqlserver字串合併 merge 方法彙總
方法1 使用游標法進行字串合併處理的示例。處理的資料 create table tb col1 varchar 10 col2 int insert tb select a 1 union all select a 2 union all select b 1 union all select b ...
sqlserver字串合併 merge 方法彙總
方法1 使用游標法進行字串合併處理的示例。處理的資料 create table tb col1 varchar 10 col2 int insert tb select a 1 union all select a 2 union all select b 1 union all select b ...