rownum to pseudokolumna, która zlicza wiersze w zestawie wyników po klauzula where została zastosowana.
Czy to właśnie chcesz uzyskać?
SELECT *
FROM (
SELECT id, column1, column2
FROM atable ORDER BY 2 DESC
)
WHERE ROWNUM < 100;
Ponieważ jest to pseudokolumna, która jest ściśle licznikiem wierszy wynikającym z klauzuli WHERE, nie pozwoli Ci na stronicowanie (tj. między 200 a 300).
Prawdopodobnie tego szukasz:
SELECT *
FROM
(SELECT a.*, rownum rnum FROM
(SELECT id, column1, column2 FROM atable ORDER BY 2 DESC) a WHERE rownum <= 300)
WHERE rnum >= 200;