Oracle - 首先按特定值排序,然后依次排序

时间:2016-08-30 10:02:38

标签: sql oracle sql-order-by

我有一个Oracle 11g表,其中的列指示了许多项的状态。是否有任何方法可以选择首先排序三个特定标志的选择,然后按字母顺序排列其余标志?

类似于

的东西
SELECT ITEM, STATUS FROM FOO ORDER BY STATUS ('I', 'U', 'P') ASC

然后会列出状态为I的所有项目,然后是U,然后是P,然后是其余项目。

2 个答案:

答案 0 :(得分:7)

这适用于所有数据库引擎

SELECT ITEM, STATUS 
FROM FOO 
ORDER BY case when STATUS = 'I' then 1
              when STATUS = 'U' then 2
              when STATUS = 'P' then 3
              else 4
         end,
         status

答案 1 :(得分:3)

试试这个:

为我工作..查看演示:

create table FOO (ITEM varchar2(10), STATUS varchar2(10)) ;

SELECT ITEM, STATUS 
    FROM FOO 
    ORDER BY DECODE (STATUS,'I',1, 'U',2, 'P',3,4) ;

结果:

SQL> SELECT ITEM, STATUS 
        FROM FOO 
        ORDER BY DECODE (STATUS,'I',1, 'U',2, 'P',3,4) ;
  2    3  
no rows selected

你是怎么用的?