これが単純であるかどうかわからない:
order by
case
when currency = 'USD' then 1
when currency = 'BHT' then 2
when currency = 'JPY' then 3
when currency = 'MYR' then 4
else 5
end
またはもう少しコンパクトですが、Oracle固有です:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
数値を使用して並べ替え順序を定義する上記のソリューションでは、大文字と小文字の区別/デコード式に記載されていない通貨が自動的に正しく並べ替えられません。
単純にUSDを先頭に置き、残りを気にしないために、「生成された」注文基準も文字値である必要があります。その場合は、以下を使用できます。
order by
case
when currency = 'USD' then '001'
else currency
end
これは「アルファベット順」の順序を使用します。これは、文字が数字の後にソートされるために機能します。 ('AAA'
を使用 '001'
の代わりに 同様に機能します。