相关疑难解决方法(0)

连接行值T-SQL

我试图将一些数据汇总到一个报告中,并需要连接其中一个表的行值.这是基本的表结构:

评测

 ReviewID  
 ReviewDate  
Run Code Online (Sandbox Code Playgroud)

评审

 ReviewerID  
 ReviewID  
 UserID  
Run Code Online (Sandbox Code Playgroud)

用户

UserID  
FName  
LName  
Run Code Online (Sandbox Code Playgroud)

这是M:M的关系.每个评论都可以有很多评论者; 每个用户都可以与许多评论相关联.

基本上,我想要看的是Reviews.ReviewID,Reviews.ReviewDate,以及该Review的所有相关用户的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  
Run Code Online (Sandbox Code Playgroud)

显示这个:

ReviewID---ReviewDate----Users  
1----------12/1/2009-----Bob, Joe, Frank  
2----------12/9/2009-----Sue, Alice
Run Code Online (Sandbox Code Playgroud)

我发现这篇文章描述了一些方法,但是大多数方法似乎只处理一个表而不是多个; 不幸的是,我的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;
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我一把吗?任何帮助将不胜感激!

sql t-sql sql-server concatenation

33
推荐指数
7
解决办法
5万
查看次数

标签 统计

concatenation ×1

sql ×1

sql-server ×1

t-sql ×1