我在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来做到这一点,但我记不起语法了。
提前致谢。
答案 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