O problema é que a Oracle não sabe que
get_fiscal_year_start_date (SYSDATE)
retorna um único resultado. Portanto, supõe-se que ele gerará muitas linhas. Obviamente, não tenho um equipamento de teste disponível, mas esta versão da sua consulta deve banir a junção cartesiana de mesclagem.
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 )
O Oracle sabe que DUAL tem uma única linha e, portanto, a subconsulta retornará um valor.