【发布时间】:2010-12-24 21:38:54
【问题描述】:
我正在尝试为报告汇总一些数据,并且需要连接其中一个表的行值。这是基本的表结构:
评论
ReviewID
ReviewDate
评论者
ReviewerID
ReviewID
UserID
用户
UserID
FName
LName
这是一个 M:M 关系。每个Review可以有多个Reviewer;每个用户可以与许多评论相关联。
基本上,我只想查看 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;
谁能帮我解决这个问题?任何帮助将不胜感激!
【问题讨论】:
标签: sql sql-server tsql concatenation