SQL 合併多行記錄的方法總匯

2022-10-03 18:33:10 字數 2077 閱讀 9896

sql中合併多行記錄的方法總匯:

--1. 建立表pugjz,新增測試資料

create table tb(id int, [value] varchar(10))

insert tb select 1, 'aa'

union all select 1, 'bb'

union all select 2, 'aaa'

union all select 2, 'bbb'

union all select 2, 'ccc'

--select * from tb

/**//*

id value

----------- ----------

1 aa

1 bb

2 aaa

2 bbb

2 ccc

(5 row(s) affected)

*/ --2 在sql2000只能用自定義函式實現

----2.1 建立合併函式fn_strsum,根據id合併value值

go create function dbo.fn_strsum(@id int)

returns varchar(8000)

as begin

declare @values varchar(8000)

set @values = ''

select @values = @values + ',' + value from tb wh id=@id

return stuff(@values, 1, 1, '')

end

go -- 呼叫函式

select id, value = dbo.fn_strsum(id) from tb group by id

drop function dbo.fn_strsu

----2.2 建立合併函式fn_strsum2,根據id合併value值

go create function dbo.fn_strsum2(@id int)

returns varchar(8000)

as begin

declare @values varchar(8000)

select @values = isnull(@values + ',', '') + value from tb where id=@id

return @values

end

go -- 呼叫函式

select id, value = d程式設計客棧bo.fn_strsum2(id) from tb group by id

drop function dbo.fn_strsum2

--3 在sql2005/sql2008中的新解法

----3.1 使用outer apply

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

), '', ''), 1, 1, '')

)n ----3.2 使用xml

select id, [values]=stuff((select ','+[value] from tb t where id=tb.id for xml path('')), 1, 1, '')

from tb

group by id

--4 刪除測試表tb

drop table tb

/**//*

id values

----------- --------------------

1 aa,www.cppcns.combb

2 aaa,bbb,ccc

(2 row(s) affected)

*/

本文標題: sql 合併多行記錄的方法總匯

本文位址:

SQL 資料表給定欄位的多行記錄的合併

最近的報表中有個需求,使用者需要看到屬於某個客戶的order的所有的items,這些屬於某個order的items需要歸併為乙個字段記錄。首先是對兩個表的描述,乙個是orderhead,乙個是orderdetails,乙個客戶 debtor 有多個order,乙個order有乙個或多個item。or...

sql多行轉為一列的合併

一 資料庫sql server列值鏈式合併 需求 原始表的資料的結構如圖1所示,把相同guid的code值生成乙個鏈式字串。圖1 目標 我們希望達到的效果如圖2所示,這裡的guid變成唯一的了,這行的記錄中包含了這個guid所對應的code字段值的鏈式字串。圖2 分析與實現 要實現圖1到圖2的轉變,...

sql多行轉為一列的合併問題

描述 將如下形式的資料按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中只能用自定義的函式...