Конкатенация значений строк T-SQL
Я пытаюсь собрать некоторые данные для отчета, и мне нужно объединить значения строк одной из таблиц. Вот основная структура таблицы:
Отзывы
ReviewID
ReviewDate
Рецензенты
ReviewerID
ReviewID
UserID
пользователей
UserID
FName
LName
Это отношения М: М. Каждый отзыв может иметь много рецензентов; Каждый пользователь может быть связан со многими отзывами.
По сути, все, что я хочу видеть, это Reviews.ReviewID, Reviews.ReviewDate и объединенная строка FName всех связанных пользователей для этого обзора (с разделителями-запятыми).
Вместо:
ReviewID---ReviewDate---User
1----------12/1/2009----Bob
1----------12/1/2009----Joe
1----------12/1/2009----Frank
2----------12/9/2009----Sue
2----------12/9/2009----Alice
Показать это:
ReviewID---ReviewDate----Users
1----------12/1/2009-----Bob, Joe, Frank
2----------12/9/2009-----Sue, Alice
я нашелэто статья, описывающая некоторые способы сделать это, но большинство из них, кажется, имеют дело только с одной таблицей, а не с несколькими; к сожалению, мой SQL-фу недостаточно силен, чтобы приспособить их к моим обстоятельствам. Мне особенно интересен пример на этом сайте, который использует FOR XML PATH (), так как он выглядит наиболее чистым и понятным.
SELECT p1.CategoryId,
( SELECT ProductName + ', '
FROM Northwind.dbo.Products p2
WHERE p2.CategoryId = p1.CategoryId
ORDER BY ProductName FOR XML PATH('')
) AS Products
FROM Northwind.dbo.Products p1
GROUP BY CategoryId;
Кто-нибудь может мне помочь с этим? Любая помощь будет принята с благодарностью!