Конкатенация значений строк 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;

Кто-нибудь может мне помочь с этим? Любая помощь будет принята с благодарностью!

Ответы на вопрос(15)

Ваш ответ на вопрос