問題は、Oracleがget_fiscal_year_start_date (SYSDATE)
を認識していないことです。 1つの結果を返します。したがって、多くの行が生成されることを前提としています。
明らかに、手元にあるテストハーネスはありませんが、このバージョンのクエリでは、マージデカルト結合を排除する必要があります。
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に1つの行があることを認識しているため、サブクエリは1つの値を返します。