Обобщите список в строку, разделенную запятыми
Это текущий результат, который можно изменить из дня в день
(int) (nvarchar)
Number Grade
--------------
1 a
1 c
2 a
2 b
2 c
3 b
3 a
Мне нужна помощь в достижении этого результата ниже.
Number Grade
-----------------
1 a, c
2 a, b, c
3 b, a
Ответы
Ответ 1
Использование:
declare @t table(Number int, Grade varchar)
insert @t values(1, 'a'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'),
(3, 'b'), (3, 'a')
select t1.Number
, stuff((
select ',' + Grade
from @t t2
where t2.Number = t1.Number
for xml path(''), type
).value('.', 'varchar(max)'), 1, 1, '') [values]
from @t t1
group by t1.Number
Ответ 2
Очевидно, вам нужно заменить dbo.tablename
на свою фактическую таблицу. Также я предполагаю, что вы используете SQL Server 2005 или лучше - всегда полезно указывать.
SELECT Number, Grades = STUFF((
SELECT ', ' + Grade FROM dbo.tablename
WHERE Number = x.Number
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')
FROM dbo.tablename AS x
GROUP BY Number;