--方法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',2
union all select 'b',3
--合併處理
--定義結果集表變數
declare @t table(col1 varchar(10),col2 varchar(100))
--定義游標並進行合併處理
declare tb cursor local
forselect col1,col2 from tb order by col1,col2
declare @col1_old varchar(10),@col1 varchar(10),@col2 int,@s varchar(100)
open tb
fetch tb into @col1,@col2
select @col1_old=@col1,@s=''
while @@fetch_status=0
begin
if @col1=@col1_old
select @s=@s+','+cast(@col2 as varchar)
else
begin
insert @t values(@col1_old,stuff(@s,1,1,''))
select @s=','+cast(@col2 as varchar),@col1_old=@col1
endfetch tb into @col1,@col2
endinsert @t values(@col1_old,stuff(@s,1,1,''))
close tb
deallocate tb
--顯示結果並刪除測試資料
select * from @t
drop table tb
/*--結果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
go--方法2
--使用使用者定義函式,配合select處理完成字串合併處理的示例
--處理的資料
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',2
union all select 'b',3
go--合併處理函式
create function dbo.f_str(@col1 varchar(10))
returns varchar(100)
asbegin
declare @re varchar(100)
set @re=''
select @re=@re+','+cast(col2 as varchar)
from tb
where col1=@col1
return(stuff(@re,1,1,''))
endgo
--呼叫函式
select col1,col2=dbo.f_str(col1) from tb group by col1
--刪除測試
drop table tb
drop function f_str
/*--結果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
go--方法3
--使用臨時表實現字串合併處理的示例
--處理的資料
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',2
union all select 'b',3
--合併處理
select col1,col2=cast(col2 as varchar(100))
into #t from tb
order by col1,col2
declare @col1 varchar(10),@col2 varchar(100)
update #t set
@col2=case when @col1=col1 then @col2+','+col2 else col2 end,
@col1=col1,
col2=@col2
select * from #t
/*--更新處理後的臨時表
col1 col2
---------- -------------
a 1
a 1,2
b 1
b 1,2
b 1,2,3
--*/
--得到最終結果
select col1,col2=max(col2) from #t group by col1
/*--結果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
--刪除測試
drop table tb,#t
go
sql server 合併字串
描述 將如下形式的資料按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中只能用自定義的函式...
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 ...