Nevím, jestli to lze považovat za jednoduché:
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
nebo o něco kompaktnější, ale specifické pro Oracle:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
Výše uvedené řešení, které používá k definování pořadí řazení čísel, nebude automaticky správně třídit měny, které nejsou uvedeny ve výrazu case/decode.
Chcete-li jednoduše umístit USD dopředu a nestarat se o zbytek, "vygenerovaná" kritéria objednávky musí být také hodnotou znaku. V takovém případě můžete použít následující:
order by
case
when currency = 'USD' then '001'
else currency
end
Který používá "abecední" řazení. To funguje, protože znaky jsou seřazeny podle číslic. (Pomocí 'AAA'
místo '001'
by fungovalo také).