Sql 将相关表中列的值连接到字符串中
我在SQL Server 2008中有两个表(1-n) 示例:1个人-“n”个地址 我想选择persons数据并将相关地址和地区放入一列(连接) 如何在tsql中做到这一点?经典的方法是对XML路径使用Sql 将相关表中列的值连接到字符串中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在SQL Server 2008中有两个表(1-n) 示例:1个人-“n”个地址 我想选择persons数据并将相关地址和地区放入一列(连接) 如何在tsql中做到这一点?经典的方法是对XML路径使用。这个问题也有重复的地方,但即使遵循这些问题,也要确保查询正确 SELECT name, STUFF(( SELECT ', ', districtname AS 'data()' FROM district WHERE ID=PersonID FOR XM
。这个问题也有重复的地方,但即使遵循这些问题,也要确保查询正确
SELECT name,
STUFF((
SELECT ', ', districtname AS 'data()'
FROM district
WHERE ID=PersonID
FOR XML PATH('')), 1, 2, '') districts
FROM person;
.测试数据
DECLARE @Person TABLE(ID INT,Name VARCHAR(100))
INSERT INTO @Person VALUES
(1,'John Smith'),(2,'Daniel')
DECLARE @Person_Address TABLE(PersonID INT,DistrictName VARCHAR(1000))
INSERT INTO @Person_Address VALUES
(1,'Brooklin'),(1,'SoHo'),
(2,'Upper West Side'),(2,'Harlem')
查询
SELECT P.Name
,STUFF((SELECT ', ' + DistrictName [text()]
FROM @Person_Address
WHERE PersonID = P.ID
FOR XML PATH(''),TYPE).
value('.','NVARCHAR(MAX)'),1 ,2,'') AS Address
FROM @Person P
GROUP BY P.Name,P.ID
结果集
╔════════════╦═════════════════════════╗
║ Name ║ Address ║
╠════════════╬═════════════════════════╣
║ Daniel ║ Upper West Side, Harlem ║
║ John Smith ║ Brooklin, SoHo ║
╚════════════╩═════════════════════════╝
选中此复选框,则此问题的回答质量较低,带有外部链接。这篇文章解释得很好,但我相信这个问题的相关答案将是一些简单明了的信息。谢谢选择这个作为答案,因为它是最干净的。。
╔════════════╦═════════════════════════╗
║ Name ║ Address ║
╠════════════╬═════════════════════════╣
║ Daniel ║ Upper West Side, Harlem ║
║ John Smith ║ Brooklin, SoHo ║
╚════════════╩═════════════════════════╝