2011-02-02 40 views
4

我在SQL Server工作2008 R2儿童数据字段汇总成一个逗号分隔场

我有一个父表和子表(一对多的关系)。我想要做的是查询父表,但也包括一个字段从子表聚合成一个逗号分隔的字符串。

因此,如果父表被称为具有ID字段的人名,FirstName和LastName以及子表被称为Kids with和ID字段,ParentID字段(父表的FK),FirstName和LastName ...我想回到一个类似的数据集:

ParentFirstName =迈克
ParentLastName =戴维斯
KidsFirstNames =苏茜,大卫,亚历克斯

我以为有办法与有关执行此XML路径,但我不记得语法。

在此先感谢。

回答

4

在这个例子中看一看

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 
+0

感谢您的解决方案,astander。我理解除了以下部分以外的所有内容:TYPE ).value('。','varchar(max)')你能解释那里发生了什么吗?再次感谢...这太棒了! – bullroa 2011-02-02 16:38:35