Vấn đề là Oracle không biết rằng get_fiscal_year_start_date (SYSDATE)
trả về một kết quả duy nhất. Vì vậy, giả sử rằng nó sẽ tạo ra nhiều hàng.
Rõ ràng là tôi không có thiết bị kiểm tra nào để sử dụng, nhưng phiên bản truy vấn này của bạn nên loại bỏ phép liên kết cartesian hợp nhất.
SELECT RTRIM (position) AS "POSITION",
. // Other fields
.
.
FROM schema.table x
, ( select get_fiscal_year_start_date (SYSDATE) as fiscal_year
from dual ) fy
WHERE hours > 0
AND pay = 'RGW'
AND NOT EXISTS( SELECT position
FROM schema.table2 y
where y.date = fy.fiscal_year
AND y.position = x.position )
Oracle biết rằng DUAL có một hàng duy nhất và do đó truy vấn phụ sẽ trả về một giá trị.