--方法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) as
begin
declare @re varchar(100)
set @re=''
select @re=@re+','+cast(col2 as varchar)
from tb
where col1=@col1
return(stuff(@re,1,1,''))
end go
--呼叫函式
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
我的系列文章
a.sql server2005 transact-sql 新兵器學習
b.mcad學習
c.**閱讀總結
d.asp.net狀態管理
e.db(資料庫)
f.wap
g.winform
h.flex
我的好文推薦
sql server2005 transact-sql 新兵器學習總結之-總結
ms sql資料庫備份和恢復儲存過程(加強版本)
sql server中分布式查詢隨筆(鏈結伺服器(sp_addlinkedserver)和遠端登入對映(sp_addlinkedsrvlogin)使用小總結)
asp.net2.0國際化/本地化應用程式的實現總結(多語言,多文化頁面的實現)
wap開發資料站(最新更新)
自定義格式字串隨筆 (iformattable,iformatprovider,icustomformatter三介面的實現)
mcad學習筆記之非同步程式設計(asynccallback 委託,iasyncresult介面,begininvoke方法,endinvoke方法的使用小總結)
mcad學習筆記之通過反射呼叫類的方法,屬性,字段,索引器(2種方法)
mcad學習筆記之序列化(2進製和soap序列 化)
mcad學習筆記之委託再理解(delegate的構造器,begininvoke,endinvoke,invoke4個方法的**)
asp.net狀態管理之一(概括篇)
flex,fms學習筆記
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 ...