如果这是一个简单的问题,我很抱歉。但是,我在大约一个小时内搜索了高低的答案。
我有一个 db_table,我需要对输出进行排序以输出到网页中的表格。数据以如下方式存储在db_table中:
date Area Value
------ ------ -------
11-mar-18 middle 10
11-mar-18 bottom 5
11-mar-18 top 12
12-mar-18 top 14
12-mar-18 bottom 4
12-mar-18 middle 17
问题是:如何对这些进行排序以产生以下结果:
date Area Value
------ ------ -------
11-mar-18 top 12
11-mar-18 middle 10
11-mar-18 bottom 5
12-mar-18 top 14
12-mar-18 middle 17
12-mar-18 bottom 4
任何帮助是极大的赞赏。
最佳答案
按字母顺序对区域进行降序排序,作为 order by 的第二个组成部分:
select *
from db_table
order by "date", area desc;
正如您所提到的,如果区域具有值 A、B、C、D 并且它们希望按 C、B、D、A 的顺序排序,则使用:
select *
from db_table
order by "date", decode(area,'C',1,'B',2,'D',3,'A',4);
附言特别是,我将日期列放在引号内,因为已经用
"date"
创建了表列,而不是 date
作为关键字,这是不可能的。
关于sql - 我需要做一个自定义 Oracle 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806450/