使用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)
您可以使用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)