Oracle
 sql >> Database >  >> RDS >> Oracle

SQL:come aggiungere valori in base alle colonne dell'indice

Se assumiamo solo 1 livello di gerarchia. Se più livelli di gerarchia diventa più interessante.

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

Ciò che fa è un self join, quindi inserisce i record correlati sulla stessa riga. quindi elimina tutti quei record con un valore in relative_to_position poiché verranno aggiunti a una riga padre.

usiamo un join LEFT perché non tutti i record avranno un valore correlato e usiamo la coalesce per garantire che non si tenti di aggiungere null. (coalesce prende il primo valore non nullo)

Non sono sicuro del motivo per cui è necessario che related_To_Position venga restituito poiché sarà SEMPRE nullo..