Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

SQL:como adicionar valores de acordo com colunas de índice


Se assumirmos apenas 1 nível de hierarquia. Se houver vários níveis de hierarquia, isso fica mais 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

O que isso faz é uma autojunção para colocar os registros relacionados na mesma linha. em seguida, ele elimina todos os registros com um valor em related_to_position, pois eles serão adicionados a uma linha pai.

usamos uma junção LEFT porque nem todos os registros terão um valor relacionado e usamos coalesce para garantir que não se tente adicionar nulos. (coalesce assume o primeiro valor não nulo)

Não tenho certeza por que você precisa de related_To_Position retornado, pois SEMPRE será nulo.