Vet inte om detta är så enkelt:
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
eller lite mer kompakt men Oracle-specifik:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
Ovanstående lösning som använder siffror för att definiera sorteringsordningen kommer inte automatiskt att sortera valutor korrekt som inte nämns i fallet/avkodningsuttrycket.
För att helt enkelt sätta USD längst fram och inte bry sig om resten, måste de "genererade" ordningskriterierna också vara ett teckenvärde. Du kan använda följande i så fall:
order by
case
when currency = 'USD' then '001'
else currency
end
Som använder en "alfabetisk" ordning. Detta fungerar eftersom tecken sorteras efter siffrorna. (Med 'AAA'
istället för '001'
skulle fungera också).