儿童数据字段汇总成一个逗号分隔场
问题描述:
我在SQL Server工作2008 R2儿童数据字段汇总成一个逗号分隔场
我有一个父表和子表(一对多的关系)。我想要做的是查询父表,但也包括一个字段从子表聚合成一个逗号分隔的字符串。
因此,如果父表被称为具有ID字段的人名,FirstName和LastName以及子表被称为Kids with和ID字段,ParentID字段(父表的FK),FirstName和LastName ...我想回到一个类似的数据集:
ParentFirstName =迈克
ParentLastName =戴维斯
KidsFirstNames =苏茜,大卫,亚历克斯
我以为有办法与有关执行此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
感谢您的解决方案,astander。我理解除了以下部分以外的所有内容:TYPE ).value('。','varchar(max)')你能解释那里发生了什么吗?再次感谢...这太棒了! – bullroa 2011-02-02 16:38:35