Jeśli przyjmiemy tylko 1 poziom hierarchii. Jeśli wiele poziomów hierarchii staje się bardziej interesujące.
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
To, co robi, to sprzężenie własne, dzięki czemu powiązane rekordy są umieszczane w tym samym wierszu. następnie eliminuje wszystkie te rekordy z wartością w related_to_position, ponieważ zostaną dodane do wiersza nadrzędnego.
używamy sprzężenia LEFT, ponieważ nie wszystkie rekordy będą miały powiązaną wartość i używamy koalescencji, aby zapewnić, że nie zostaną dodane wartości null. (coalesce przyjmuje pierwszą niepustą wartość)
Nie jestem pewien, dlaczego musisz zwrócić related_To_Position, ponieważ ZAWSZE będzie null.