有乙個表
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...