SQL 合併數行資料為一行 Combine Row data to a column

合併Q1中的數行資料為Q2/Q3/Q4.

Combine the row data in Q1 Table to Q2/Q3/Q4.

Q1 = 資料源, table source

Q2 = Example 1

Q3 = Example 2

Q4 = Example 3

個人覺得使用stuff 比 substring 好, 因為不用寫上長度.



Q1,Q2,Q3,Q4 result:





Code:


create table #temp(Staff varchar(50),Department varchar(50))

insert into #temp values('A','IT')
insert into #temp values('B','IT')
insert i

合併Q1中的數行資料為Q2/Q3/Q4.

Combine the row data in Q1 Table to Q2/Q3/Q4.

Q1 = 資料源, table source

Q2 = Example 1 

Q3 = Example 2

Q4 = Example 3

個人覺得使用stuff 比 substring 好, 因為不用寫上長度.

 

Q1,Q2,Q3,Q4 result:

 

Code:

 
create table #temp(Staff varchar(50),Department varchar(50))

insert into #temp values('A','IT')
insert into #temp values('B','IT')
insert into #temp values('C','Sale')
insert into #temp values('D','Sale')

--Q1
select * 
from #temp

--Q2
select 'AllStaffs' = substring( 
									(	select ', ' + Staff 
										from #temp
										for XML path(''), elements
									),2 ,500
								)	-- substring to remove first ','

--Q3
select 'AllStaffs' = stuff( 
								(	select ', ' + Staff 
									from #temp
									for XML path(''), elements
								),1 ,1,''
							)	-- stuff to remove first ',' and add ''

--Q4
SELECT 
Distinct Department
,Staff = stuff(
	(	SELECT ', ' + Staff 
		FROM #temp e2 
		WHERE e2.Department = e1.Department 
		FOR XML path(''), elements 
	),1,1,'') 
FROM #temp e1


drop table #temp

 

 

 

 

參考:http://csharpdotnetfreak.blogspot.com/2009/07/mssql-combine-columns-comma-separated.html

 

 

 

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

熱愛生命 喜愛新奇 有趣的事物

 

過去 是無法改變
將來 卻能夠創造

 

希望使大家生活更便利
世界更美好

 

a guy who loves IT and life