SQL - 按订单条件分组

SQL - Grouping with order condition

我是 SQL 的新手,在 table 中有一些数据,我想根据列 CLASSSTATUS 进行分组,条件基于中的值两列。它将根据最高顺序分组

下图Table

场景一

Table 来源 :

ID Class Status
001 Platinum ACTIVE
001 Gold ACTIVE
001 Silver ACTIVE
001 Regular ACTIVE

分组后输出:

ID Class Status
001 Platinum ACTIVE

场景二

Table 来源 :

ID Class Status
001 Gold ACTIVE
001 Silver INACTIVE
001 Regular INACTIVE

分组后输出:

ID Class Status
001 Gold ACTIVE

所以基本上分组将由 CLASSStatus

的值决定

对于CLASS分组的顺序是 白金 > 黄金 > 白银 > 普通

对于Status分组的顺序是 活跃 > 不活跃

有什么办法吗?

谢谢

您可以使用 sql case 语句来定义每个 classsubject 的顺序。然后将结果 table 排序为子查询。

select t1.ID, t1.class, t1.Status from (
    select ID, Class, Status (case when 'Platinum' then 1 when 'Gold' then 2 when 'Silver' then 3 else 4 end) as sort_order1,
        (case when 'active' then 1 else 2 end) as sort_order2
    from table1)
order by t1.sort_order1, t1.sort_order2