Если вы знаете фиксированный верхний счетчик для числа значений, которые будут объединены, будет работать следующий метод.
create table test1 (id integer,email varchar(255)) with (heap,distribution=round_robin);
insert into test1 (id,email) values (1,'abc@msn.com');
insert into test1 (id,email) values (1,'xyz@gmail.com');
insert into test1 (id,email) values (2,'efg@xyz.com');
insert into test1 (id,email) values (2,'efg@xyz.com');
select id as Id,concat_ws(',',[1],[2],[3],[4]) as EmailAddresses from (
select id,[1],[2],[3],[4]
from (
select id,row_number() over (partition by id order by email) seq,email from (
select distinct id,email from test1
) as distinctRows
) as numberedRows
pivot (
max(email) for seq in ([1],[2],[3],[4])
) as pivotLookup
) as pivotedRows