Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Unterauswahl in Oracle

In Oracle können Unterabfragen nur Werte von übergeordneten Abfragen einer Ebene tief sehen. Da Sie zwei verschachtelte Auswahlen haben, kann die innere die Werte der äußeren nicht sehen.

Sie könnten zuerst den Join durchführen:

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;

Sie könnten auch eine PL/SQL-Funktion verwenden, die den ersten quote_price zurückgibt aus price_history wenn eine article_table.part_no gegeben wird .