我需要根据货币进行交易.

例如:

  • 必和必拓
  • 美元
  • 迈尔
  • JYP

分类如下:

  • 美元
  • 必和必拓
  • 日元
  • 迈尔

有没有简单的方法来处理这个问题?

推荐答案

不知道这是否简单:

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'也行).

Sql相关问答推荐

使用子查询和连接更新PostgreSQL

从2个表中查找每条记录的唯一最接近的日期匹配

SQL是否可以计算每年的所有日期变化?

使用Lead获取下一个不同的日期

使用列表作为参数进行 Select ,如果为空,则在PostgreSQL中不使用参数进行 Select

将一个数组反嵌套到另外两个数组SQL中(Athena/presto)

PATINDEX中与[A-Z]匹配(U除外)的正则表达式

SQL仅返回第一个字母在A-Z之间的值

SQL 查找 varchar 类型列及其值中多次出现的子字符串

Postgresql 生成器列导致语法错误

两个具有 NULL 值的表达式结果之间的差异

如何在sparksql查询中使用日期值?

每个ID的SQL返回可能的最低级别及其值

根据开始时间和结束时间计算has_impact字段

如何获取每个组中最近的n条记录并将它们聚合成数组

SQL获取两个日期范围之间的计数

如何在 ClickHouse SQL 中使用 CTE 将邻居语句中的数字作为偏移量传递?

BigQuery Pivot 遗漏行

多列上的 SQL UNIQUE 约束 - 它们的组合必须是唯一的还是至少其中之一?

Postgres 条件求和函数