Ich habe Tabelle wie ein Baum wie hier;SQL Server Daten aus hierarchischer Tabelle mit Eltern und Kindern
Id ParentId Name
-- -------- ---
1 NULL A
2 1 B
3 2 F
4 3 C
5 3 D
6 1 E
7 2 G
8 NULL M
9 8 N
10 8 O
11 10 P
1-A
2-B
3-F
4-C
5-D
7-G
6-E
8-M
9-N
10-O
11-P
Ich habe dies bisher versucht;
WITH Relation (Id, ParentId, Name, [level], [orderSequence])
AS (SELECT r.Id,
r.ParentId,
r.Name,
0,
CAST (r.Id AS VARCHAR (2500))
FROM Report AS r
WHERE r.Id = @rid
UNION ALL
SELECT p.Id,
p.ParentId,
p.Name,
rl.[level] + 1,
CAST (rl.orderSequence + '_' + CAST (p.Id AS VARCHAR) AS VARCHAR (2500))
FROM Report AS p INNER JOIN Relation AS rl ON p.ParentId = rl.Id)
SELECT rl.*
FROM relation AS rl
Aber es gibt nur childs zurück. Wie kann ich Knoten alle Eltern mit allen Kindern erhalten Sample-Ausgabe, die ich für Knoten Id = 3-F erhalten möchte;
Id ParentId Name
-- -------- ---
1 NULL A
2 1 B
3 2 F
4 3 C
5 3 D
1-A
2-B
3-F
4-C
5-D
Ich glaube, Sie zur Vereinigung zwei rekursiven CTEs haben werden - eine für das Erhalten der Nachkommen der Baumknoten und der zweite für die Vorgänger. –