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

Subseleccionar en Oracle

En Oracle, las subconsultas solo pueden ver valores de consultas principales de un nivel de profundidad. Como tiene dos selecciones anidadas, la interna no puede ver los valores de la externa.

Podrías realizar la unión primero:

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;

También podría usar una función PL/SQL que devolvería el primer quote_price de price_history cuando se le da un article_table.part_no .