sql >> Databáze >  >> RDS >> Oracle

SQL:Jak přidat hodnoty podle sloupců indexu

Pokud předpokládáme pouze 1 úroveň hierarchie. Pokud je hierarchie více úrovní, bude to zajímavější.

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

Co to dělá, je vlastní připojení, takže související záznamy umístí na stejný řádek. poté odstraní všechny záznamy s hodnotou v related_to_position, protože budou přidány do nadřazeného řádku.

používáme LEVÉ spojení, protože ne všechny záznamy budou mít související hodnotu a používáme sloučení, abychom zajistili, že se nepokusí přidat nulové. (sloučení má první nenulovou hodnotu)

Nejste si jisti, proč potřebujete vrátit relateds_To_Position, protože VŽDY bude null..



  1. Dotaz podle souřadnic trvá příliš dlouho – možnosti optimalizace?

  2. Docker (Apple Silicon/M1 Preview) MySQL žádný odpovídající manifest pro linux/arm64/v8 v položkách seznamu manifestu

  3. Použití rekurzivního CTE s Ecto

  4. Rails 3.0.3 - Oracle_enhanced nefunguje