В Oracle подзапросы могут видеть значения из родительских запросов только на один уровень.Поскольку у вас есть два вложенных выбора, внутренний не может видеть значения из внешнего.
Вы можете выполнить соединение первым:
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;
Вы также можете использовать функцию PL / SQL, которая будет возвращать первый quote_price
из price_history
при получении article_table.part_no
.