sql - 我需要做一个自定义 Oracle 排序

标签 sql oracle sql-order-by

如果这是一个简单的问题,我很抱歉。但是,我在大约一个小时内搜索了高低的答案。

我有一个 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/

相关文章:

sql - 在 SQL 中,Join 实际上是一个 Intersection?它也是一个链接还是一个 "Sideway Union"?

javascript - 如何将sql添加到javaScript函数中?

sql - 选择最近的行,优化 (Oracle SQL)

database - 无法在 SysAux 中恢复损坏的 Oracle 数据文件 block

javascript - 列出由带有字母标题的 javascript 按字母顺序排列的列表

sql - SQL 查询中前 10 行的问题?

java - Mac OSX 上 VM 中的 Oracle Database 12c

sql - 如何避免 Entity Framework 6 在生成的查询中添加 ORDER BY

mysql - 避免使用 INNER JOIN + ORDER BY 进行文件排序

sql - 删除 T-SQL 中字符串中的最后一个字符?