sql server 在進行資料遷移和報表處理的時候遇到將一列多行資料拼接為乙個字串的情形,查詢相關的資料整理如下,提供兩種方法。
table:sc
student
course
張三大學語文
李四大學語文
張三書法鑑賞
張三**欣賞
李四電影賞析
期望得到的結果:
student
course
張三大學語文,書法鑑賞,**欣賞
李四大學語文,電影賞析
一、使用者自定義函式
create結果:(2 row(s) affected)function fn_merge (@student
nvarchar(50
))returns
nvarchar(50)as
begin
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
]
二、使用for xml path
select結果:(2 row(s) affected)distinct
[student],
stuff
( (
select',
'+[course
]from
[dbo
].[sc
]where student =
a.student
for xml path(''
) )
,1,1,'')as
course
from
[dbo
].[sc
]as a
T SQL 將一列多行資料合併為一行
sql server在進行資料遷移 和報表處理的時候會遇到將一列多行資料拼接為乙個字串的情況,為了處理這個問題,在網上找了一些相關的資料,提供兩種方法,供遇到類似問題的朋友們參考,也藉此加深自己的印象。table sc student course 張三大學語文 李四大學語文 張三書法鑑賞 張三 欣...
T SQL 將一列多行資料合併為一行
sql server在進行資料遷移和報表處理的時候會遇到將一列多行資料拼接為乙個字串的情況,為了處理這個問題,在網上找了一些相關的資料,提供兩種方法,供遇到類似問題的朋友們參考,也藉此加深自己的印象。table sc student course 張三大學語文 李四大學語文 張三書法鑑賞 張三 欣賞...
orcale 多行多列合併為多行一列
使用concat ch1,ch2 函式,但是這個只適用於有兩個引數的。而我的是多張表,不能使用。select concat ch1,ch2 from t sql語句 這樣的效果還是不能達到我們想要的效果,然後我們使用as 將標紅的字段別名更改為我們需要的。select buc.company nam...