T SQL行合併成列與列拆分成行

2021-09-22 21:52:05 字數 3373 閱讀 5055

原文:

t-sql行合併成列與列拆分成行

本文出處:

感覺最近sql也沒少寫,突然有一點生疏了,對於用的不是太頻繁的一些操作,時間一久就容易生。

多行的某乙個列合併成乙個列

另外是乙個相反的操作,借助上面合併之後的結果,將乙個多個值的字串列拆分開來,轉換為多行,

用到的字串拆分函式,比較常見

create

function

[dbo

].[fn_splitstringtotable](

@svarchar(max

),

@split

varchar(10))

returns

@retable

( id

intidentity(1,1

), value

varchar(100

) )

asbegin

if@s

isnull

return

if@split

isnull

return

if(len(@split)<=0)

begin

insert

into

@revalues (@s

)

return

enddeclare

@splitlen

intset

@splitlen

=len(@split ) -

1while

charindex(@split, @s) >

0begin

insert

@revalues(left(@s, charindex(@split, @s) -1))

set@s

=stuff(@s, 1, charindex(@split, @s) +

@splitlen, ''

)

endinsert

@revalues(@s

)

return

end

測試指令碼,沒啥技術含量

create

table

testcolumnmergeandsplit

( id

intidentity(1,1

), businessid

int,

businessvalue

varchar(20))

goinsert

into

testcolumnmergeandsplit

select

1,'aaa

'union

allselect

1,'bbb

'union

allselect

1,'ccc

'union

allselect

2,'***

'union

allselect

2,'yyy

'union

allselect

2,'zzz'go

select

*from

testcolumnmergeandsplit

go--

合併多列為一列

select

t1.businessid,

stuff

( (

select',

'+t2.businessvalue

from

testcolumnmergeandsplit t2

where t2.businessid =

t1.businessid

for xml path(''

) ),

1,1,''

)

ascolstring

from

testcolumnmergeandsplit t1

group

byt1.businessid

goselect

*from

testcolumnmergeandsplit_bak

goselect

t1.businessid,t1.colstring,t2.id,t2.value

from

testcolumnmergeandsplit_bak t1

,')t2

go

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

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

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

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

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

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