What is the downside of using an inline view?
You can always use the row_number
analytic function rather than the rownum
pseudocolumn. But that requires that you put your ORDER BY
in two different places
with alphabet as
( select 'A' as letters from dual union all
select 'B' as letters from dual union all
select 'C' as letters from dual)
select row_number() over (order by letters desc) rn,
letters
from alphabet
order by letters desc
That works regardless of the sort order as long as your analytic function ORDER BY
matches the ORDER BY
in the outer query
SQL> ed
Wrote file afiedt.buf
1 with alphabet as
2 ( select 'A' as letters from dual union all
3 select 'B' as letters from dual union all
4 select 'C' as letters from dual)
5 select row_number() over (order by letters desc) rn,
6 letters
7 from alphabet
8* order by letters desc
SQL> /
RN L
---------- -
1 C
2 B
3 A
SQL> ed
Wrote file afiedt.buf
1 with alphabet as
2 ( select 'A' as letters from dual union all
3 select 'B' as letters from dual union all
4 select 'C' as letters from dual)
5 select row_number() over (order by letters asc) rn,
6 letters
7 from alphabet
8* order by letters asc
SQL> /
RN L
---------- -
1 A
2 B
3 C