Не знам дали това се квалифицира като просто:
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)
Горното решение, използващо числа за дефиниране на реда на сортиране, няма автоматично да сортира правилно валутите, които не са споменати в израза case/decode.
За да поставите USD на първо място и да не се интересувате от останалото, "генерираните" критерии за поръчка трябва също да бъдат стойност на символа. В този случай можете да използвате следното:
order by
case
when currency = 'USD' then '001'
else currency
end
Което използва "азбучен" ред. Това работи, защото знаците се сортират след цифрите на числата. (Използвайки 'AAA'
вместо '001'
също ще работи).