合併同一行內不同列的相同資料

2021-08-24 19:33:05 字數 2106 閱讀 3544

有乙個表

a b c a b b null null

d b c y null c a a

y r v a null c null null

合併同一行裡的重複資料,合併完後的資料為

a b c null null

d b c y a

y r v a c

去除重複資料,但是首次出現的順序不變

/**/

--> 生成測試資料表:tb

ifnot

object_id('

[tb]')

isnull

drop

table[tb

]gocreate

table[tb

]([col1

]nvarchar(1

),[col2

]nvarchar(1

),[col3

]nvarchar(1

),[col4

]nvarchar(1

),[col5

]nvarchar(1

),[col6

]nvarchar(1

),[col7

]nvarchar(1

),[col8

]nvarchar(1

))insert[tb

]selectn'

a',n'

b',n'

c',n'

a',n'

b',n'

b',null

,null

union

allselectn'

d',n'

b',n'

c',n'

y',null,n'

c',n'

a',n'

a'union

allselectn'

y',n'

r',n'

v',n'

a',null,n'

c',null

,null

go--

select * from [tb]

-->sql查詢如下:

declare

@svarchar

(max

),@s1

varchar

(max

)select@s=

isnull(@s

+','

,'')+

name

from

syscolumns

where

object_id('

tb')=

idexec('

with t as

(select *

from (select rn=row_number()over(order by getdate()),* from tb) a

unpivot(a for b in('+

@s+'))b

)select a,rn,c=

''col

''+ltrim(row_number()over(partition by rn order by b))

into ##

from t a

where not exists(

select 1

from t

where rn=a.rn and a=a.a and b')

select

@s1=

isnull

(@s1+'

,',''

)+c from

## groupbyc

exec('

select'+

@s1+

'from ##

pivot(max(a) for c in(

'+@s1+'

))b;

drop table##;

')/*

col1 col2 col3 col4 col5

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

a b c null null

d b c y a

y r v a c

(3 行受影響)

*/

mysql合併同一列資料 mysql合併同一列的值

我有如下的查詢條件顯示 我希望最終顯示的效果如圖 將id相同的group name合併到一行。實現方法 在group name前面加關鍵字group concat.然後在sql語句最後加上group by id.group concat能將同一列的值以逗號分隔開,拼成乙個字串。mysql自帶 第乙個...

Excel怎樣把相同列資料合併到一行

把sheet1的年齡和sheet2的身高和在一行,依據是姓名,方法是在sheet1的某空白處輸入語句 vlookup a1,sheet2 a 1 b 5,2,0 之後會顯示出標籤 身高 滑鼠放在右下角,然後下拉即可。a1對應第乙個引數,表示關聯的字段,這裡是姓名 sheet2 a 1 b 5對應第二...

mysql合併同一列的值

我有例如以下的查詢條件顯示 我希望終於顯示的效果如圖 將id同樣的group name合併到一行。實現方法 在group name前面加keywordgroup concat.然後在sql語句最後加上group by id.group concat能將同一列的值以逗號分隔開。拼成乙個字串。mysql...