Oracle SQL中的自定义顺序

前端之家收集整理的这篇文章主要介绍了Oracle SQL中的自定义顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要基于货币进行订单交易。
然而,我需要实现一个自定义订单,这使得USD总是在顶部,其余的应该排序asc。

例如 :

> BHT
> USD
> MYR
> JYP

应排序如下:

> USD
> BHT
>日元
> MYR

有一个简单的方法来处理这个?

不知道这是否符合简单:
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)

上述使用数字定义排序顺序的解决方案不会自动对货币/ decode表达式中未提及的货币进行正确排序。

为了简单地将USD放在前面而不关心其余部分,“生成的”顺序标准也必须是字符值。在这种情况下,您可以使用以下命令:

order by 
    case 
       when currency = 'USD' then '001' 
       else currency
    end

其中使用“字母顺序”。这是因为字符在数字数字后排序。 (使用’AAA’而不是’001’也可以工作)。

原文链接:https://www.f2er.com/oracle/207482.html

猜你在找的Oracle相关文章