Вы можете использовать FOR XML PATH
. В то время как немного трудно читать, afaik в настоящее время является самым кратким способом конкатенации строк.
Разбивка
FOR XML PATH
Соединяет все значения, которые соответствуют подвыбор
STUFF
удаляет ведущую запятая
SQL Заявление
SELECT q.CAT
, q.TYPE
, SUBPRODUCT = STUFF((SELECT ', ' + qi.SUBPRODUCT FROM q qi WHERE qi.Cat = q.Cat AND qi.Type = q.Type FOR XML PATH('')), 1, 2, '')
FROM q
GROUP BY
q.CAT
, q.TYPE
тестовый скрипт
;WITH q AS (
SELECT * FROM (VALUES
(1, 1, 1, 'AA')
, (2, 1, 1, 'BB')
, (3, 1, 2, 'CC')
) AS a (ID, CAT, TYPE, SUBPRODUCT)
)
SELECT q.CAT
, q.TYPE
, SUBPRODUCT = STUFF((SELECT ', ' + qi.SUBPRODUCT FROM q qi WHERE qi.Cat = q.Cat AND qi.Type = q.Type FOR XML PATH('')), 1, 2, '')
FROM q
GROUP BY
q.CAT
, q.TYPE
так как кажется, что вы получили помощь вам нужно, вы не могли бы принять ответ. :) –