我正在尝试将某些报表的数据放在一起,并需要连接其中一个表的行值。这是基本的表结构:连接行值T-SQL
评论
ReviewID
ReviewDate
评审
ReviewerID
ReviewID
UserID
用户
UserID
FName
LName
这是一个M:M的关系。每个评论可以有许多评论者;每个用户可以与许多评论相关联。
基本上,我想看到的仅仅是Review.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
我发现this文章描述了一些方法可以做到这一点,但大多数的这些似乎只与一个表,而不是多重处理;不幸的是,我的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;
有谁能帮我一个忙吗?任何帮助将不胜感激!
类似http://stackoverflow.com/questions/122942/how-to-return-multiple -values-in-one-column-t-sql和http://stackoverflow.com/questions/451415/simulating-groupconcat-mysql-function-in-ms-sql-server-2005 – VolkerK 2009-12-09 16:32:01