读取两列,根据条件比较第二列值,将最终结果写入新表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取两列,根据条件比较第二列值,将最终结果写入新表相关的知识,希望对你有一定的参考价值。

我有一张桌子,Groups,有两列,Group_NameCriticality

Group_Name  Severity
-------------------
Group 1     LOW
Group 2     MEDIUM
Group 2     LOW
Group 3     LOW
Group 3     HIGH
Group 3     MEDIUM
Group 4     LOW
Group 4     MEDIUM
Group 4     LOW
Group 4     MEDIUM

我现在想要创建一个具有最终严重性详细信息的表。喜欢

Group_Name  Final_Severity
-------------------
Group 1     LOW
Group 2     MEDIUM
Group 3     HIGH
Group 4     MEDIUM

比较条件是检查为每个组分配的最高严重性类型是什么 - L <M <H。

例如,考虑到Group 3,因为分配了3种严重性类型,比较应该返回H作为所选组Group 3的最终严重性。

最后将所有这些值写入a(最终)表中,如上所述。

我怎么能在SQL Server中执行此操作?

答案

试试这个,这个查询会给你想要的结果:

select Group_name, Severity from (
    select Group_name, Severity,
           ROW_NUMBER() over (partition by group_name order by [level] desc) [rn]
    from MY_TABLE [t] join
    --here we assign numeric values to severities to make it comparable
    (values ('LOW', 1),('MEDIUM', 2),('HIGH', 3)) as Severity([name], [level]) on [t].Severity = [Severity].name
) a where rn = 1

以上是关于读取两列,根据条件比较第二列值,将最终结果写入新表的主要内容,如果未能解决你的问题,请参考以下文章