Nehmen wir nur 1 Hierarchieebene an. Bei mehreren Hierarchieebenen wird dies interessanter.
SELECT A.Value+coalesce(B.Value,0) as Value
, A.Position
, A.Relates_to_Position
, A.Type
FROM Table A
LEFT JOIN Table B
on B.Relates_To_Position = A.Position
WHERE A. Relate_to_Position is null
Was dies bewirkt, ist eine Selbstverknüpfung, sodass verwandte Datensätze in derselben Zeile platziert werden. Anschließend löscht es alle Datensätze mit einem Wert in „relevate_to_position“, da sie einer übergeordneten Zeile hinzugefügt werden.
Wir verwenden einen LEFT-Join, da nicht alle Datensätze einen verwandten Wert haben, und wir verwenden Coalesce, um sicherzustellen, dass nicht versucht wird, Nullen hinzuzufügen. (Coalesce nimmt den ersten Nicht-Null-Wert)
Sie sind sich nicht sicher, warum Sie related_To_Position zurückgeben müssen, da es IMMER null sein wird..