Problém je v tom, že Oracle neví, že get_fiscal_year_start_date (SYSDATE)
vrátí jeden jediný výsledek. Předpokládá se tedy, že bude generovat mnoho řádků.
Zjevně nemám po ruce testovací svazek, ale tato verze vašeho dotazu by měla zakázat sloučení kartézského spojení.
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 ví, že DUAL má jeden řádek, a proto poddotaz vrátí jednu hodnotu.