W Oracle podzapytania mogą widzieć tylko wartości z zapytań nadrzędnych o jeden poziom głębokości. Ponieważ masz dwie zagnieżdżone selekcje, wewnętrzna nie widzi wartości z zewnętrznej.
Możesz najpierw wykonać dołączenie:
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;
Możesz również użyć funkcji PL/SQL, która zwróci pierwszą quote_price
z price_history
po otrzymaniu article_table.part_no
.