Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL :comment ajouter des valeurs en fonction des colonnes d'index

Si nous supposons seulement 1 niveau de hiérarchie. S'il y a plusieurs niveaux de hiérarchie, cela devient plus intéressant.

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

Ce que cela fait est une auto-jointure afin de placer les enregistrements liés sur la même ligne. il élimine ensuite tous ces enregistrements avec une valeur dans relate_to_position car ils seront ajoutés à une ligne parente.

nous utilisons une jointure GAUCHE car tous les enregistrements n'auront pas une valeur associée et nous utilisons la fusion pour nous assurer que les valeurs nulles ne sont pas tentées d'être ajoutées. (coalesce prend la première valeur non nulle)

Vous ne savez pas pourquoi vous avez besoin que lies_To_Position soit renvoyé car il sera TOUJOURS nul..