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

问题描述 投票:0回答:1

我有一张桌子,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中执行此操作?

sql-server-2012 insert compare condition
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.