我有一个表Groups
,它有两列,Group_Name
和Criticality
。
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中执行此操作?
答案 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