Проблемът е, че Oracle не знае, че get_fiscal_year_start_date (SYSDATE)
връща един единствен резултат. Така че се предполага, че ще генерира много редове.
Очевидно нямам под ръка тестова програма, но тази версия на вашата заявка трябва да забрани декартово свързване на сливане.
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 знае, че DUAL има един ред и следователно подзаявката ще върне една стойност.