【发布时间】:2016-08-30 10:02:38
【问题描述】:
我有一个 Oracle 11g 表,其中有一列指示许多项目的状态。有什么方法可以选择先排序三个特定标志,然后按字母顺序排列其余标志?
类似
SELECT ITEM, STATUS FROM FOO ORDER BY STATUS ('I', 'U', 'P') ASC
然后会列出所有状态为 I、U、P 的项目,最后是剩余的项目。
【问题讨论】:
标签: sql oracle sql-order-by
我有一个 Oracle 11g 表,其中有一列指示许多项目的状态。有什么方法可以选择先排序三个特定标志,然后按字母顺序排列其余标志?
类似
SELECT ITEM, STATUS FROM FOO ORDER BY STATUS ('I', 'U', 'P') ASC
然后会列出所有状态为 I、U、P 的项目,最后是剩余的项目。
【问题讨论】:
标签: sql oracle sql-order-by
这适用于所有数据库引擎
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
【讨论】:
试试这个:
为我工作..查看演示:
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
你是怎么用的??
【讨论】: