sql >> Base de Datos >  >> RDS >> Oracle

SQL:cómo agregar valores según las columnas de índice

Si solo asumimos 1 nivel de jerarquía. Si hay varios niveles de jerarquía, esto se vuelve más interesante.

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

Lo que esto hace es una unión automática, por lo que coloca registros relacionados en la misma fila. luego elimina todos esos registros con un valor enrelated_to_position ya que se agregarán a una fila principal.

usamos una unión IZQUIERDA porque no todos los registros tendrán un valor relacionado y usamos coalesce para asegurarnos de que no se intenten agregar valores nulos. (coalesce toma el primer valor no nulo)

No estoy seguro de por qué necesita que se devuelva "relate_To_Position", ya que SIEMPRE será nulo.