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

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

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

如何将两列csv转换为第二列的向量?

Azure 表存储:是不是可以使用与添加两列值的结果进行比较的查询条件?

SQL - 从单列到两列的所有日期组合

怎样一个表中的2个查询结果合并到一个表中的两列

如何根据 Python、R 中不同数据框/患者之间的第一列元素/基因取第二列值/计数的平均值?

比较两列:如果匹配,则在新列中打印值,如果不匹配,则将第二列的值打印到新列