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

时间:2018-03-05 12:33:33

标签: sql-server-2012 insert compare conditional-statements

我有一个表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 <1。 M&lt;小时。

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

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

如何在SQL Server中执行此操作?

1 个答案:

答案 0 :(得分:0)

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

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