Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Sub-selecionar no oracle


No Oracle, as subconsultas só podem ver valores de consultas pai de um nível de profundidade. Como você tem duas seleções aninhadas, a interna não pode ver os valores da externa.

Você pode executar a junção primeiro:
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;

Você também pode usar uma função PL/SQL que retornaria o primeiro quote_price de price_history quando recebe um article_table.part_no .