Als we maar uitgaan van 1 hiërarchieniveau. Als er meerdere hiërarchische niveaus zijn, wordt dit 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
Wat dit doet, is een self-join, zodat gerelateerde records in dezelfde rij worden geplaatst. het verwijdert vervolgens al die records met een waarde in relate_to_position omdat ze worden toegevoegd aan een bovenliggende rij.
we gebruiken een LEFT join omdat niet alle records een gerelateerde waarde hebben en we gebruiken coalesce om ervoor te zorgen dat er geen null's worden toegevoegd. (samenvoegen neemt de eerste niet-null-waarde)
Ik weet niet zeker waarom je relate_To_Position moet retourneren, want het zal ALTIJD nul zijn..