2

クエリの内容に従って、このクエリの結果を並べ替えたい:

ここにあります :

SELECT a from Frais a where a.libelle = 'FRET' or a.libelle = 'Douane' or a.libelle = 'Transitaire'

FRET最初とDouaneその後などのレコードが欲しい

order by libelle 

アルファベット順のascまたはdescに従って並べ替えても問題は解決しません

4

3 に答える 3

4

1 つのオプションは、CASEステートメントを使用することです。

SELECT * 
FROM Frais a 
WHERE a.libelle = 'FRET' 
   OR a.libelle = 'Douane' 
   OR a.libelle = 'Transitaire'
ORDER BY 
   CASE 
     WHEN a.libelle = 'FRET' THEN 1
     WHEN a.libelle = 'Douane' THEN 2
     WHEN a.libelle = 'Transitaire' THEN 3
   END
于 2013-05-07T17:52:20.677 に答える
3
SELECT a from Frais a where a.libelle = 'FRET' or a.libelle = 'Douane' or a.libelle = 'Transitaire'
order by case a.libelle when 'FRET' then 0 when 'Douane' then 1 when 'Transitaire' then 2 end
于 2013-05-07T17:53:02.793 に答える
0

明示的な順序付けを持つ「一時」テーブルに値を配置することによっても、これを行うことができます。

select f.*
from frais f join
     (select 'FRET' as val, 1 as ord union all
      select 'Douane', 2 union all
      select 'Transitaire', 3
     ) vals
     on f.libelle = vals.val
order by vals.ord
于 2013-05-07T17:55:56.957 に答える