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 .