Não sei se isso se qualifica como simples:
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
ou um pouco mais compacto, mas específico do Oracle:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
A solução acima usando números para definir a ordem de classificação não classificará automaticamente as moedas corretamente que não são mencionadas na expressão case/decode.
Para simplesmente colocar USD na frente e não se importar com o resto, os critérios de pedido "gerados" também devem ser um valor de caractere. Você pode usar o seguinte nesse caso:
order by
case
when currency = 'USD' then '001'
else currency
end
Que usa uma ordenação "alfabética". Isso funciona porque os caracteres são classificados após os dígitos do número. (Usando
'AAA'
em vez de '001'
funcionaria também).