Non puoi usare rownum
come questo. rownum
viene calcolato quando i valori vengono effettivamente restituiti dalla query, solo quando viene restituita una riga. Da qui l'affermazione:
where rownum = 2
non restituirà mai un valore, perché è necessario che ci sia un "1" prima di un "2".
Se utilizzi Oracle 12+, puoi utilizzare offset
clausola con fetch first <n> rows only
. Nelle versioni precedenti, puoi utilizzare row_number() over ()
per calcolare un numero di riga come colonna e utilizzarlo nel where
.
In realtà, la tua query utilizza già una sottoquery, quindi puoi fare qualcosa del tipo:
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))