【问题标题】:Write a SQL query to achieve below result编写 SQL 查询以实现以下结果
【发布时间】:2018-08-12 09:20:51
【问题描述】:

我正在尝试使用不同的场景来学习 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

【问题讨论】:

  • 您需要更具体地了解“如何”确定输出。
  • 您想根据 col1 对 col2 的值进行排序吗?
  • 例如:select col1 from tab order by col1 asc;按 col2 asc 从 tab order 中选择 col2;现在我想要这两个查询的组合输出,以获得所示的最终结果

标签: sql oracle11g plsqldeveloper


【解决方案1】:

这解决了问题的原始版本。

您的问题相当模糊,可以有多种解释。

你想要这个吗?

select col1, 4 - col2
from t
order by col1;

我猜你不会。您的问题需要更多详细信息才能有所帮助。

【讨论】:

  • 这是对 OP 问题的完全合理的答案。由于它们根本没有具体说明应该如何确定输出,因此它们最终可能会得到大量随机答案。
  • 您的查询更具体到我提供的数据,这里表格中的数据可以是任何数字。我正在寻找每列按升序排列的组合结果,并合并该结果或任何其他方法来实现。
【解决方案2】:

我们很幸运,让我试试吧:

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>

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2017-03-04
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2021-05-01
    • 2014-03-18
    • 1970-01-01
    • 2020-05-15
    相关资源
    最近更新 更多