我正在尝试使用不同的方案学习SQL。有人可以帮我实现以下结果,每列必须按升序排列。
表数据
col1 col2
10 3
20 2
30 1
输出应该是:
10,1
20,2
30,3
另一个例子
表数据
col1 col2
10 10
20 9
30 7
输出应该是:
10,7
20,9
30,10
我们很幸运地猜测,让我试试:
SQL> with test (col1, col2) as
2 (select 10, 3 from dual union
3 select 20, 2 from dual union
4 select 30, 1 from dual
5 ),
6 inter as
7 (select col1, row_number() over (order by col1) rn1,
8 col2, row_number() over (order by col2) rn2
9 from test
10 )
11 select i1.col1, i2.col2
12 from inter i1 join inter i2 on i1.rn1 = i2.rn2
13 order by i1.col1;
COL1 COL2
---------- ----------
10 1
20 2
30 3
SQL>
这解决了问题的原始版本。
您的问题非常模糊,并且可以进行多种解释。
你想要这个吗?
select col1, 4 - col2
from t
order by col1;
我猜你不会。您的问题需要更多细节才能发挥作用。