I have the following SQL query:
select
ID, COLUMN1, COLUMN2
from
(select ID, COLUMN1, COLUMN2, row_number() over (order by 2 DESC) NO from A_TABLE)
where
NO between 0 and 100
What I am trying to do is to select the first 100 records of the query
select ID, COLUMN1, COLUMN2 from ATABLE order by 2 DESC
And here are the problems:
-
Apparently, the
order byclause is not working. I’ve noticed that I have to add anotherorder by 2 DESCclause, just after(...) from ATABLE, for my query to work. Is there something I do wrong? Or is it expected behaviour? -
How can I add a
whereclause? Let’s say I need to select only the first 100 records of the tablewhere COLUMN1 like '%value%'. I’ve tried adding the where clause after(...) from ATABLEbut it produced an error…
Help? Thanks.
PS: I’m using Oracle 10g R2.
rownum is a pseudo column that counts rows in the result set after the where clause has been applied.
Is this what you’re trying to get?
Because it’s a pseudo column that is strictly a counter of rows resulting from the where clause it will not allow you to do pagination (i.e. between 200 & 300).
This is probably what you’re looking for: