我有一个Oracle 11g表,其中的列指示了许多项的状态。是否有任何方法可以选择首先排序三个特定标志的选择,然后按字母顺序排列其余标志?
类似于
的东西SELECT ITEM, STATUS FROM FOO ORDER BY STATUS ('I', 'U', 'P') ASC
然后会列出状态为I的所有项目,然后是U,然后是P,然后是其余项目。
答案 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
你是怎么用的?