No sé si esto califica como 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
o un poco más compacto pero específico de Oracle:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
La solución anterior que usa números para definir el orden de clasificación no ordenará automáticamente las monedas correctamente que no se mencionan en la expresión de mayúsculas y minúsculas.
Para simplemente poner USD al frente y no preocuparse por el resto, el criterio de pedido "generado" también debe ser un valor de carácter. Puede usar lo siguiente en ese caso:
order by
case
when currency = 'USD' then '001'
else currency
end
Que utiliza un orden "alfabético". Esto funciona porque los caracteres se ordenan después de los dígitos del número. (Usando 'AAA'
en lugar de '001'
funcionaría también).