rownum
は使用できません このような。 rownum
値が実際にクエリから返されるときに計算されます-行が返されるときのみ。したがって、ステートメント:
where rownum = 2
「2」の前に「1」が必要なため、値を返すことはありません。
Oracle 12以降を使用している場合は、offset
を使用できます。 fetch first <n> rows only
する句 。以前のバージョンでは、row_number() over ()
を使用できます 行番号を列として計算し、それをwhere
で使用します 。
実際、クエリはすでにサブクエリを使用しているため、次のようなことができます。
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))