Nie wiem, czy to kwalifikuje się jako proste:
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
lub nieco bardziej kompaktowy, ale specyficzny dla Oracle:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
Powyższe rozwiązanie wykorzystujące liczby do zdefiniowania kolejności sortowania nie spowoduje automatycznego prawidłowego sortowania walut, które nie są wymienione w wyrażeniu sprawy/dekodowania.
Aby po prostu umieścić USD na początku i nie przejmować się resztą, „wygenerowane” kryteria zamówienia również muszą być wartością znakową. W takim przypadku możesz użyć następującego:
order by
case
when currency = 'USD' then '001'
else currency
end
Który używa kolejności „alfabetycznej”. Działa to, ponieważ znaki są sortowane po cyfrach. (Używając 'AAA'
zamiast '001'
również zadziała).