sql >> Databasteknik >  >> RDS >> Oracle

SQL:Hur man lägger till värden enligt indexkolumner

Om vi ​​bara antar 1 nivå av hierarki. Om flera nivåer av hierarki blir detta mer intressant.

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

Vad detta gör är en självkoppling så att relaterade poster placeras på samma rad. den eliminerar sedan alla dessa poster med värdet i relation_to_position eftersom de kommer att läggas till på en överordnad rad.

vi använder en LEFT-join eftersom inte alla poster kommer att ha ett relaterat värde och vi använder sammansmältning för att säkerställa att null-värden inte försöker läggas till. (coalesce tar det första icke-nullvärdet)

Inte säker på varför du behöver returnera relates_To_Position eftersom den ALLTID kommer att vara null.



  1. UPPER() – Konvertera till versaler i PostgreSQL

  2. MySQL Välj datum lika med idag

  3. 1064, Du har ett fel i din SQL-syntax;... Python MySQL

  4. Kopiera data från en tabell till en annan OCH lägg till ytterligare data