Oracle
 sql >> Base de données >  >> RDS >> Oracle

Sous-sélectionner dans oracle

Dans Oracle, les sous-requêtes ne peuvent voir les valeurs des requêtes parentes qu'à un niveau de profondeur. Puisque vous avez deux sélections imbriquées, celle de l'intérieur ne peut pas voir les valeurs de celle de l'extérieur.

Vous pouvez d'abord effectuer la jointure :

SELECT something, somthingelse, old_price
  FROM (SELECT a.something, a.somthingelse, p.quote_price old_price,
               row_number() over (PARTITION BY a.part_no 
                                  ORDER BY valid_from DESC) rnk
           FROM article_table a
           LEFT JOIN price_history p ON a.part_no = p.part_no)
 WHERE rnk = 1;

Vous pouvez également utiliser une fonction PL/SQL qui renverrait le premier quote_price de price_history lorsqu'on lui donne un article_table.part_no .