根据字段的层次结构值对表中的值进行排序

时间:2016-04-18 15:14:02

标签: sql oracle

我想知道如何根据字段的层次结构值对表中的值进行排序。

EX:

A     B 
--------
1     A 
2     F
3     A
4     P
5     O
6     F

我想按B字段对值进行排序,然后首先显示F值,然后是A值,然后是P值,最后是O值。

最后,结果必须如下:

2   F
6   F
1   A
3   A
4   P
5   O

2 个答案:

答案 0 :(得分:4)

case中使用order by表达式。

select *
from tablename
order by case when B = 'F' then 1 
              when B = 'A' then 2 
              when B = 'P' then 3 
              when B = 'O' then 4 
          end, A

答案 1 :(得分:0)

更紧凑:

order by translate (B, 'FAPO', '1234')

如果需要(现在或将来),这也允许您将PF与PA进行比较,而不仅仅是B列中的单个字母值。