Vous ne pouvez pas utiliser rownum
comme ça. rownum
est calculé lorsque les valeurs sont réellement renvoyées par la requête, uniquement lorsqu'une ligne est renvoyée. D'où l'énoncé :
where rownum = 2
ne renverra jamais de valeur, car il doit y avoir un "1" avant un "2".
Si vous utilisez Oracle 12+, vous pouvez utiliser le offset
clause avec fetch first <n> rows only
. Dans les versions antérieures, vous pouvez utiliser row_number() over ()
pour calculer un numéro de ligne comme une colonne et l'utiliser dans le where
.
En fait, votre requête utilise déjà une sous-requête, vous pouvez donc faire quelque chose comme :
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))