子数据字段聚合到一个逗号分隔字段中

时间:2011-02-02 05:37:05

标签: sql sql-server

我在SQL Server 2008 R2中工作

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

因此,如果父表名为具有ID字段的Person,FirstName和LastName,子表称为Kids with和ID字段,ParentID字段(FK表示父表),FirstName和LastName ... I想要返回类似于此的数据集:

ParentFirstName = Mike
ParentLastName =戴维斯
KidsFirstNames = Suzy,David,Alex

我认为有一种方法可以使用For XML Path来做到这一点,但我记不起语法了。

提前致谢。

1 个答案:

答案 0 :(得分: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