2016-08-30 10 views
0

いくつかの項目のステータスを示す列を持つOracle 11gの表があります。特定の3つのフラグが最初に順序付けされ、残りがアルファベット順に並べ替えられる方法はありますか?その後、ステータスのすべてのアイテムをリストしOracle - 最初に特定の値で注文し、残りは

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

に似

何か私、そしてU、その後、P、その後、残りの項目の最後。

答えて

4

これは、これが欠落している右括弧に関するエラーがスローされますいくつかの理由で、すべてのDBエンジン

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 
+0

完璧、多くのありがとう! – bjelleklang

1

これを試してみてください:me..Checkデモのために働く

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 

どのようにあなたがそれを使用しています?

+0

のために動作します。 – bjelleklang

+0

私のために働いています...あなたの試した何かが間違っている...デモを確認\ – XING

関連する問題