我正在尝试将一些数据汇总为一个报告,并且需要连接表之一的行值。这是基本的表结构:
评论
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;
谁能帮我这个忙吗?任何帮助将不胜感激!
看看这个
DECLARE @Reviews TABLE(
ReviewID INT,
ReviewDate DATETIME
)
DECLARE @Reviewers TABLE(
ReviewerID INT,
ReviewID INT,
UserID INT
)
DECLARE @Users TABLE(
UserID INT,
FName VARCHAR(50),
LName VARCHAR(50)
)
INSERT INTO @Reviews SELECT 1, '12 Jan 2009'
INSERT INTO @Reviews SELECT 2, '25 Jan 2009'
INSERT INTO @Users SELECT 1, 'Bob', ''
INSERT INTO @Users SELECT 2, 'Joe', ''
INSERT INTO @Users SELECT 3, 'Frank', ''
INSERT INTO @Users SELECT 4, 'Sue', ''
INSERT INTO @Users SELECT 5, 'Alice', ''
INSERT INTO @Reviewers SELECT 1, 1, 1
INSERT INTO @Reviewers SELECT 2, 1, 2
INSERT INTO @Reviewers SELECT 3, 1, 3
INSERT INTO @Reviewers SELECT 4, 2, 4
INSERT INTO @Reviewers SELECT 5, 2, 5
SELECT *,
(
SELECT u.FName + ','
FROM @Users u INNER JOIN
@Reviewers rs ON u.UserID = rs.UserID
WHERE rs.ReviewID = r.ReviewID
FOR XML PATH('')
) AS Products
FROM @Reviews r
T-SQL 组合来自两个或多个表的记录。它用于将两个或多个表中的记录连接到数据库中。JOIN 用于通过使用彼此相等的值连接许多表中的字段。 假设有下面两张表,(a) CUSTOMERS表,记录如下—— (b) 另一个表 ORDERS,记录如下 - 在 SELECT 语句中连接这两个表,如下所示 - 执行上面查询语句,得到以下结果 - 连接在 WHERE 子句中执行。许多运算符将用于连接表,例如:
问题内容: 我使用的是Microsoft SQL Server 2005,并且能够根据以下查询连接行值: 但是它在Microsoft Server 2000中不起作用。它在for关键字附近给我一个错误。谁能帮助我串联Microsoft Server 2000中的行值? 问题答案: 这是一种对您有用的技术。如果愿意,可以在一个批处理语句中执行此操作: 有关更多信息,请参见使用COALESCE构建逗号
概述 T型连接片是DIY的Makeblock零件之一。 它采用6061铝合金铝挤压技术制成。 与所有Makeblock零件兼容,可用于构建各种结构。 而且还有助于在mBot Ranger中安装和修复Auriga的情况。 参数 材质:6061铝 厚度:3mm 长度:104mm 宽度:84mm
问题内容: 拥有5列地址数据。我需要将这些字段连接到一个地址中,如果它们之间存在空格,则它们之间应有空格。如果该列的值为空,则应跳过该列,不要输入任何空格。 我想做的是有一个变量,并将其分配给第一列street_number的值,然后当我移至下一列street_ext时,如果它不为null,我想检查一下是否该变量为null,如果不是,则在其后附加一个空格和值…以此类推。 我很生疏,可能会朝正确的方
问题内容: 我在两个表之间有多对多关系。 表包含我的餐厅。 表包含不同的类别。 表包含两列,每列分别包含两个表的ID。 以下陈述是我能想到的,但没有给我我想要的输出。 我希望输出是有关餐厅的信息,并在最后一列中是类别的连接行。 问题答案: 要串联值,可以使用。xml路径解决方案有误,应使用和特殊字符。 您也可以使用变量解决方案
问题内容: 首先,我要感谢肯特·米利根(Kent Milligan)及其他的文章,网址为http://www.mcpressonline.com/sql/techtip-combining-multiple- row-values-into-a-single-row-with-sql-in-db2- for-i.html 使我尽可能地解决了这个问题。但是现在我需要扩大他在这里所做的事情。 为避免您