Je ne sais pas si cela peut être qualifié de simple :
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 un peu plus compact mais spécifique à Oracle :
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
La solution ci-dessus utilisant des nombres pour définir l'ordre de tri ne triera pas automatiquement correctement les devises qui ne sont pas mentionnées dans l'expression case/decode.
Pour simplement mettre USD au premier plan et ne pas se soucier du reste, les critères de commande "générés" doivent également être une valeur de caractère. Vous pouvez utiliser ce qui suit dans ce cas :
order by
case
when currency = 'USD' then '001'
else currency
end
Qui utilise un ordre "alphabétique". Cela fonctionne parce que les caractères sont triés après les chiffres du nombre. (En utilisant 'AAA'
au lieu de '001'
fonctionnerait aussi).