sql >> Database teknologi >  >> RDS >> Oracle

SQL:Sådan tilføjes værdier i henhold til indekskolonner

Hvis vi kun antager 1 niveau af hierarki. Hvis der er flere niveauer af hierarki, bliver dette mere interessant.

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

Hvad dette gør, er en selvtilslutning, så den sætter relaterede poster på samme række. det fjerner derefter alle disse poster med en værdi i relation_to_position, da de vil blive tilføjet til en overordnet række.

vi bruger en LEFT join, fordi ikke alle poster vil have en relateret værdi, og vi bruger coalesce for at sikre, at null'er ikke forsøges tilføjet. (sammensmeltning tager den første ikke-nul værdi)

Ikke sikker på, hvorfor du skal returnere relates_To_Position, da den ALTID vil være nul.



  1. Få sidste række PR. gruppe

  2. Laravel 4:multiplum hvor med eller i veltalende

  3. Forespørgselstidsresultat i MySQL m/ PHP

  4. MySQL:Multi-column join på tværs af flere tabeller?