我有一个表父和一个像这样的表子:
Parent
ID Name
1 Parent1
2 Parent2
Son
ID ParentID
10 1
20 1
30 1
15 2
25 2
最简单的方法是,在选择父级时,获取单个列中所有儿子的ID?像这样:
Result:
ID Name AllMySons
1 Parent1 10,20,30
2 Parent2 15, 25
我想构建一个函数来生成带有儿子的字符串,但有没有人有更好的想法?
答案 0 :(得分:3)
select P.ID,
P.Name,
stuff((select ','+cast(S.ID as varchar(10))
from Son S
where S.ParentID = P.ID
for xml path('')), 1, 1, '') AllMySons
from Parent P
答案 1 :(得分:1)
这个怎么样。
SELECT p1.id,
p1.name,
AllMySons = Replace ((SELECT s.id AS 'data()'
FROM son s
WHERE p1.id = s.parentid
FOR xml path('')), ' ', ', ')
FROM parent p1
GROUP BY p1.id,
p1.name;