Di Oracle, subkueri hanya dapat melihat nilai dari kueri induk sedalam satu tingkat. Karena Anda memiliki dua pilihan bersarang, yang dalam tidak dapat melihat nilai dari yang luar.
Anda bisa melakukan join terlebih dahulu:
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;
Anda juga dapat menggunakan fungsi PL/SQL yang akan mengembalikan quote_price
first pertama dari price_history
ketika diberi article_table.part_no
.