不知道这是否简单:
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
或者更紧凑但特定于Oracle:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
上述使用数字定义排序顺序的解决方案不会自动正确排序case/decode表达式中未提及的货币.
为了简单地将美元放在前面,而不关心其余部分,"生成的"订单标准也必须是字符值.在这种情况下,可以使用以下选项:
order by
case
when currency = 'USD' then '001'
else currency
end
它使用"字母顺序"排序.这是因为字符是按数字排序的.(用'AAA'
而不是'001'
也行).