Friday, June 29, 2012

Using FOR XML PATH to covert rows to columns with comma concatenation

Createtable Table1( rowid int, value varchar(50))
insertinto Table1 values(1,'A')
insert into Table1 values(1,'B')
insert into Table1 values(1,'C')
insert into Table1 values(2,'D')
insert into Table1 values(2,'E')
insert into Table1 values(2,'F')
insert into Table1 values(2,'A')

SELECT DISTINCT

rowid,

STUFF(

(SELECT ',' + SubTable.value

FROM Table1 AS SubTable

WHERE SubTable.rowid = Table1.rowid

FOR XML PATH('')), 1, 1, '') AS ConcateValues

FROM Table1

ORDER BY rowid

--Results

rowid ConcateValues
1 A,B,C
2 D,E,F,A