Trong Oracle, các truy vấn con chỉ có thể xem các giá trị từ các truy vấn mẹ ở độ sâu một cấp. Vì bạn có hai lựa chọn lồng nhau nên lựa chọn bên trong không thể nhìn thấy các giá trị từ lựa chọn bên ngoài.
Bạn có thể thực hiện tham gia trước:
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;
Bạn cũng có thể sử dụng một hàm PL / SQL sẽ trả về quote_price
đầu tiên từ price_history
khi được cung cấp một article_table.part_no
.