首页 > 解决方案 > 根据表中的值对列值重新排序

问题描述

我想知道,我们如何在检索数据时按降序对列重新排序。

请尝试提供一个解决方案,该解决方案可以适用于任意数量的列。

在我们检索数据时,每一行都应该按降序重新排列。我正在尝试执行诸如 order by 之类的操作,但不是基于列,而是基于行。是否可以实现。

标签: sqloracle

解决方案


使用 w 作为降序进行排序。如果它为空,则使用 x。如果它为空,则使用 y 如果为空,则使用 z

这将是COALESCE

order by coalesce(w,x,y,z) desc

这将为您提供如下结果。首先是所有以最大值开头的行(在我的示例中为 8),然后是所有以下一个值开头的行(在我的示例中为 7)。

+ --+---+---+---+
| w | x | 是 | z |
+ --+---+---+---+
| 8 | 7 | 6 | 5 |
| | | 8 | 0 |
| | 8 | 6 | 8 |
| 8 | 8 | 8 | 8 |
| | | 7 | 0 |
| | 7 | 8 | 9 |
+ --+---+---+---+

如果您想在这些行中进一步排序,请扩展该ORDER BY子句,例如:

order by coalesce(w,x,y,z) desc, coalesce(x,y,z) desc, coalesce(y,z) desc, z desc

推荐阅读