declare @tbl_email table (id int, email varchar(20)) insert into @tbl_email select 1, 'A' union all select 2, 'A0' union all select 2, 'A1' union all select 3, 'A2' union all select 3, 'A3' union all select 3, 'A4' union all select 4, 'A5' select * from @tbl_email id email ----------- -------------------- 1 A 2 A0 2 A1 3 A2 3 A3 3 A4 4 A5Here's the required output:
id email_list ----------- ----------- 1 A 2 A0, A1 3 A2, A3, A4 4 A5And the code...
;with Numbered as ( select rownum = row_number() over(partition by id order by id, email), id, email from @tbl_email ) ,FirstRecords as ( select rownum, id, email from Numbered where rownum = 1 ) ,ReturnAllRecords as ( select rownum, id, cast(email as varchar(500)) as email_list from FirstRecords union all select Numbered.rownum, Numbered.id, cast(email_list + ', ' + Numbered.email as varchar(500)) from Numbered inner join ReturnAllRecords on ReturnAllRecords.id = Numbered.id and ReturnAllRecords.rownum + 1 = Numbered.Rownum ) select id, max(email_list) as email_list from ReturnAllRecords group by idComments are always welcome...
~~ CK
No comments:
Post a Comment