|
|
|
|
|
by forinti
1986 days ago
|
|
Try this: select ord, table_name, first_name, last_name, total_rows
from (
select table_name,
row_number() over (order by table_name asc) ord,
count(1) over () total_rows,
from all_tables
where table_name like 'B%'
order by table_name desc
) where ord between 10 and 19
order by ord
This is basically what Oracle Apex does. You can do this without window functions, but it gets a bit more complicated.I like to add total_rows so that I can show a "rows 10 - 19 of 81" header. You can also get the very first and last values by adding theses columns: first_value(table_name) over (order by table_name asc rows between unbounded preceding and unbounded following) first_name,
last_value(table_name) over (order by table_name asc rows between unbounded preceding and unbounded following) last_name
Alternatively, you could get the very last and very first whole rows by changing the outer where clause: ord=1 or rownum=1 or ord between 10 and 19
And then it would be easy to have a nice header with "rows 10 - 19 of 81 (Algiers to Zimbabwe)" with very little code. |
|