我需要基于货币进行订单交易。
然而,我需要实现一个自定义订单,这使得USD总是在顶部,其余的应该排序asc。
然而,我需要实现一个自定义订单,这使得USD总是在顶部,其余的应该排序asc。
例如 :
> BHT
> USD
> MYR
> JYP
应排序如下:
> USD
> BHT
>日元
> MYR
有一个简单的方法来处理这个?
不知道这是否符合简单:
原文链接:https://www.f2er.com/oracle/207482.htmlorder 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)
上述使用数字定义排序顺序的解决方案不会自动对货币/ decode表达式中未提及的货币进行正确排序。
为了简单地将USD放在前面而不关心其余部分,“生成的”顺序标准也必须是字符值。在这种情况下,您可以使用以下命令:
order by case when currency = 'USD' then '001' else currency end
其中使用“字母顺序”。这是因为字符在数字数字后排序。 (使用’AAA’而不是’001’也可以工作)。