Sql 子数据字段聚合为一个逗号分隔的字段
我在SQL Server 2008 R2中工作 我有一个父表和一个子表(一对多关系)。我想做的是查询父表,但也包括子表中聚合为逗号分隔字符串的字段 因此,如果父表名为Person,带有ID字段、FirstName和LastName,子表名为Kids,带有ID字段、ParentID字段(父表的FK)、FirstName和LastName…我想返回一个类似于以下内容的数据集: ParentFirstName=MikeSql 子数据字段聚合为一个逗号分隔的字段,sql,sql-server,Sql,Sql Server,我在SQL Server 2008 R2中工作 我有一个父表和一个子表(一对多关系)。我想做的是查询父表,但也包括子表中聚合为逗号分隔字符串的字段 因此,如果父表名为Person,带有ID字段、FirstName和LastName,子表名为Kids,带有ID字段、ParentID字段(父表的FK)、FirstName和LastName…我想返回一个类似于以下内容的数据集: ParentFirstName=Mike ParentLastName=Davis KidsFirstNames=苏西、
ParentLastName=Davis
KidsFirstNames=苏西、大卫、亚历克斯 我认为有一种方法可以通过For XML路径实现这一点,但我记不起语法
提前感谢。看看这个例子
declare @YourTable table (BirthDay datetime, PersonName varchar(20))
insert into @YourTable VALUES ('1-10-2010', 'Joe' )
insert into @YourTable VALUES ('2-10-2010', 'Bob' )
insert into @YourTable VALUES ('2-10-2010', 'Alice')
SELECT
p1.BirthDay
,STUFF(
(SELECT
', ' + p2.PersonName
FROM @YourTable p2
WHERE p2.BirthDay=p1.BirthDay
ORDER BY p2.PersonName
FOR XML PATH(''), TYPE
).value('.','varchar(max)')
,1,2, ''
) AS PersonNames
FROM @YourTable p1
GROUP BY p1.BirthDay
谢谢你的解决方案,阿斯坦德。除了以下部分外,我了解所有正在进行的事情:TYPE).value('.',varchar(max)')你能解释一下那里发生了什么吗?再次感谢……这太棒了!