2011-02-02 63 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