Você não pode usar
rownum
assim. rownum
é calculado quando os valores são realmente retornados da consulta -- somente quando uma linha é retornada. Daí a afirmação:where rownum = 2
nunca retornará um valor, porque precisa haver um "1" antes de um "2".
Se você estiver usando o Oracle 12+, poderá usar o
offset
cláusula com fetch first <n> rows only
. Em versões anteriores, você pode usar row_number() over ()
para calcular um número de linha como uma coluna e usá-lo no where
. Na verdade, sua consulta já usa uma subconsulta, então você pode fazer 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))