Я пытаюсь собрать некоторые данные для отчета и нужно объединить значения строк одной из таблиц. Вот основная структура таблицы:
Отзывы
ReviewID
ReviewDate
Рецензенты
ReviewerID
ReviewID
UserID
Пользователи
UserID
FName
LName
Это отношение M: M. В каждом обзоре может быть много рецензентов; каждый Пользователь может быть связан со многими Обзорами.
В принципе, все, что я хочу увидеть, это 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-fu недостаточно силен, чтобы адаптировать их к моим обстоятельствам. Меня особенно интересует пример на этом сайте, который использует 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;
Может ли кто-нибудь дать мне руку с этим? Любая помощь будет принята с благодарностью!