Способ-1: Для базы данных версии Oracle12c или выше
SELECT fieldA, fieldB
FROM table
ORDER BY fieldA
OFFSET 5 ROWS FETCH NEXT 14 ROWS ONLY
Метод 2: для версии базы данных Oracle11g или ниже с использованием аналитической функции RowNumber ()
SELECT fieldA, fieldB
FROM (
SELECT fieldA, fieldB,
row_number() over (order by fieldA) rowRank
FROM table_name
)
WHERE rowRank BETWEEN 5 AND 14;
Метод 3: для версии базы данных Oracle11g или ниже с использованием RowNum
SELECT T.* FROM (
SELECT T.*, rowNum as rowIndex
FROM (
SELECT fieldA, fieldB,
FROM table_name
)T)T
WHERE rowIndex > 0 AND rowIndex <= 20;
В некоторых случаях я обнаружил, что метод-3 быстрее, чем метод-2, поскольку в методе 2 обязательный порядок по пунктам. Однако, если у вас версия базы данных 12c или выше, вы должны использовать метод-1.