代码之家  ›  专栏  ›  技术社区  ›  Shreesha

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

  •  0
  • Shreesha  · 技术社区  · 6 年前

    我有一张桌子, 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<<H

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

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Michał Turczyn    6 年前

    尝试此操作,此查询将为您提供以下结果:

    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