设计 select SQL 查询

Design select SQL query

我在 table 案例中有三个预期值,严重、不严重、未知,每个 case_id

select case_id, case_seriousness 
from case;

我必须构建一个 SQL 查询,每个 case_id.

应该显示一行

如果 case_id 的行有多个值,则应根据优先级只显示一行 - 严重、不严重然后是未知。

例如严重在一行中,其余四行有非严重或未知,那么严重将是他在一条记录中显示的值。

如果有不严重和未知的记录,则应显示不严重。

因此优先级与来自 S、NS 和 UK 的类似

您可以使用如下解析函数:

select case_id, case_seriousness 
  from
      (select case_id, case_seriousness, 
              row_number() over (partition by case_id 
                                 order by case case_seriousness 
                                               when 'Serious' then 1 
                                               when 'Non-Serious' then 2
                                               else 3 
                                           end ) as rn 
          from case)
where rn = 1;

或者,您也可以使用 DECODE 代替 CASE..WHEN