Ако приемем само 1 ниво на йерархия. Ако има няколко нива на йерархия, това става по-интересно.
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
Това, което прави, е самостоятелно присъединяване, така че поставя свързани записи на един и същи ред. след това елиминира всички тези записи със стойност в relate_to_position, тъй като те ще бъдат добавени към родителски ред.
ние използваме LEFT съединение, защото не всички записи ще имат свързана стойност и използваме coalesce, за да гарантираме, че няма да се опитват да добавят null. (коалесцията приема първата ненулева стойност)
Не съм сигурен защо трябва да върнете relates_To_Position, тъй като той ВИНАГИ ще бъде нулев..