No puede usar rownum como esto. rownum se calcula cuando los valores se devuelven realmente de la consulta, solo cuando se devuelve una fila. Por lo tanto, la declaración:
where rownum = 2
nunca devolverá un valor, porque debe haber un "1" antes de un "2".
Si está usando Oracle 12+, puede usar el offset cláusula con fetch first <n> rows only . En versiones anteriores, puede usar row_number() over () para calcular un número de fila como una columna y usarlo en el where .
En realidad, su consulta ya usa una subconsulta, por lo que puede hacer algo como:
select *
from (select . . .,
row_number() over (order by Request_ID, Actual_Start_Date) as rn
. . .
) t
WHERE rn < (1000000 * to_Number(:X) and)
rn >= (1000000 * (to_Number(:X)-1))