Nemůžete použít rownum
takhle. rownum
se vypočítá, když jsou hodnoty skutečně vráceny z dotazu - pouze když je vrácen řádek. Proto tvrzení:
where rownum = 2
nikdy nevrátí hodnotu, protože před "2" musí být "1".
Pokud používáte Oracle 12+, můžete použít offset
klauzule s fetch first <n> rows only
. V dřívějších verzích můžete použít row_number() over ()
vypočítat číslo řádku jako sloupec a použít jej v where
.
Ve skutečnosti váš dotaz již používá dílčí dotaz, takže můžete udělat něco jako:
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))