T SQL 將一列多行資料合併為一行

2022-05-08 20:39:11 字數 1505 閱讀 6476

sql server在進行資料遷移和報表處理的時候會遇到將一列多行資料拼接為乙個字串的情況,為了處理這個問題,在網上找了一些相關的資料,提供兩種方法,供遇到類似問題的朋友們參考,也藉此加深自己的印象。

table:sc

student

course

張三大學語文

李四大學語文

張三書法鑑賞

張三**欣賞

李四電影賞析

期望得到的結果:

student

course

張三大學語文,書法鑑賞,**欣賞

李四大學語文,電影賞析

if object_id(n'sc') is not null

begin

drop table sc

endelse

begin

create table sc

student nvarchar(50),

course nvarchar(50)

insert into sc

select n'張三',n'大學語文' union all

select n'李四',n'大學語文' union all

select n'張三',n'書法鑑賞' union all

select n'張三',n'**賞析' union all

select n'李四',n'電影賞析'           

endgo

(5 row(s) affected)

s方法一:使用者自定義函式

create function fn_merge (@student nvarchar(50))

returns nvarchar(50)

asbegin

declare @course nvarchar(50)

select @course = isnull(@course + ',','') + @course

from sc

where student = @student

return @course

endselect distinct [student]

,dbo.fn_merge([student]) as course

from [dbo].[sc]

結果:(2 row(s) affected)

方法二:for xml path

select  distinct [student]

,stuff(

select ','+[course]

from [dbo].[sc]

where student = a.student

for xml path('')

,1,1,''

)as course

from [dbo].[sc] as a

結果:(2 row(s) affected)

for xml path語句的應用

stuff()函式

T SQL 將一列多行資料合併為一行

sql server在進行資料遷移 和報表處理的時候會遇到將一列多行資料拼接為乙個字串的情況,為了處理這個問題,在網上找了一些相關的資料,提供兩種方法,供遇到類似問題的朋友們參考,也藉此加深自己的印象。table sc student course 張三大學語文 李四大學語文 張三書法鑑賞 張三 欣...

T SQL 將一列多行資料合併為一行

sql server 在進行資料遷移和報表處理的時候遇到將一列多行資料拼接為乙個字串的情形,查詢相關的資料整理如下,提供兩種方法。table sc student course 張三大學語文 李四大學語文 張三書法鑑賞 張三 欣賞 李四電影賞析 期望得到的結果 student course 張三大學...

orcale 多行多列合併為多行一列

使用concat ch1,ch2 函式,但是這個只適用於有兩個引數的。而我的是多張表,不能使用。select concat ch1,ch2 from t sql語句 這樣的效果還是不能達到我們想要的效果,然後我們使用as 將標紅的字段別名更改為我們需要的。select buc.company nam...