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))