如何按asc顺序和desc顺序对同一列进行排序

Avi*_*ash 2 sql oracle11g

使用SQL查询,我们如何获得2列的输出,第一列是以asc顺序排序的列,第二列是顺序desc,两者都是相同的列.

例如:

emp table:
empid
1 
5
9
4
Run Code Online (Sandbox Code Playgroud)

查询输出应该是

empid_1   empid_2
1          9
4          5
5          4
9          1
Run Code Online (Sandbox Code Playgroud)

OP到目前为止尝试了什么

WITH emp1 
     AS (SELECT ROWNUM a, 
                empno 
         FROM   (SELECT empno 
                 FROM   emp 
                 ORDER  BY 1 ASC)), 
     emp2 
     AS (SELECT ROWNUM b, 
                empno 
         FROM   (SELECT empno 
                 FROM   emp 
                 ORDER  BY 1 DESC)) 
SELECT emp1.empno, 
       emp2.empno 
FROM   emp1, 
       emp2 
WHERE  emp1.a = emp2.b; 
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

您可以使用row_number()并自行加入:

select e1.empid as empid_1, e2.empid as empid_2
from (select e.*, row_number() over (order by emp_id) as seqnum
      from emp e
     ) e1 join
     (select e.*, row_number() over (order by emp_id desc) as seqnum
      from emp e
     ) e2
     on e1.seqnum = e2.seqnum;
Run Code Online (Sandbox Code Playgroud)

编辑:

您也可以这样做,rownum但需要额外的select:

select e1.empid as empid_1, e2.empid as empid_2
from (select e.*, rownum as seqnum
      from (select e.* from emp e order by empid asc) e
     ) e1 join
     (select e.*, rownum as seqnum
      from (select e.* from emp e order by empid desc) e
     ) e2
     on e1.seqnum = e2.seqnum;
Run Code Online (Sandbox Code Playgroud)