Как получить значения столбца в разделителе запятой SQL

Привет мои исходные данные ниже

Id   | Value
-----+------
0001 | IN
0001 | ME
0001 | OH
0001 | ON
0002 | AC
0002 | ON
0002 | VI
0002 | ZO
0003 | ME
0003 | OO
0003 | PS
0003 | QA

Требуется получить данные в

Id   | Value
-----+------
0001 | IN,ME,OH,ON
0002 | AC,ON,VI,ZO
0003 | ME,OO,PS,QA

в SQL Server 2008

Ответ 1

Это будет работать:

  SELECT
  t1.ID,
  MemberList = substring((SELECT ( ', ' + Value )
                       FROM your_table t2
                       WHERE t1.ID = t2.ID
                       ORDER BY 
                          ID,
                          Value
                       FOR XML PATH( '' )
                      ), 3, 1000 )FROM your_table t1
   GROUP BY ID

Ответ 2

    drop table #t

create table #t(id varchar(10),value char(10))

insert into #t values('0001','IN'),
('0001','ME'),
('0001','OH'),
('0001','ON'),
('0002','AC'),
('0002','ON'),
('0002','VI'),
('0002','ZO'),
('0003','ME'),
('0003','OO'),
('0003','PS'),
('0003','QA')

select distinct id,
    stuff((select ',' + CAST(t2.Value as varchar(10))
     from #t t2 where t1.id = t2.id 
     for xml path('')),1,1,'') as Value
from #t t1
group by id,Value

Вывод:

enter image description here

Смотрите демонстрацию