【发布时间】:2020-12-23 18:43:41
【问题描述】:
我正在尝试从表中检索数据,但我需要以非常具体的方式对其进行排序,我不确定是否可以单独使用 Oracle SQL。
我需要做的是检索所有行,但是以第 3 列为空的方式对其进行排序(在下图中由空格表示),这些行首先排序。然后,第 3 列中所有不为空的行将显示在第 1 列中具有其列值的行之后。
我有什么:
+------+-------+------+
| Col1 | Col2 | Col3 |
+------+-------+------+
| 1 | text | |
| 2 | text | 1 |
| 3 | text | 1 |
| 8 | text | 10 |
| 9 | text | 10 |
| 10 | text | |
+------+-------+------+
我想要的结果:
+------+-------+------+
| Col1 | Col2 | Col3 |
+------+-------+------+
| 1 | text | |
| 2 | text | 1 |
| 3 | text | 1 |
| 10 | text | |
| 8 | text | 10 |
| 9 | text | 10 |
+------+-------+------+
我尝试过的:
我尝试的第一件事是使用:
ORDER BY coalesce(Col3, Col1)
它让我接近结果,但 Col1 值 10 需要在 Col3 值 10 之前显示。
+------+-------+------+
| Col1 | Col2 | Col3 |
+------+-------+------+
| 1 | text | |
| 2 | text | 1 |
| 3 | text | 1 |
| 8 | text | 10 |
| 9 | text | 10 |
| 10 | text | |
+------+-------+------+
我还尝试创建一个新列,如果 Col3 为空,则 Col4 为真,否则为假,但这与上面的合并基本相同。
我也尝试过只运行一些基本的订单,但没有成功。
【问题讨论】: