2014-09-04 106 views
0

我有一个表包含多个行的下面的值,我努力编写一个查询,返回一个总结表列的行,如下所示。总结一行有一个结果

任何想法如何获得以下结果?

状态
普通
正常
普通
关键
普通
警告
普通

结果是 “关键”

状态
普通
正常
正常
正常
正常
普通
警告
普通

结果是 “警告”

状态
普通
正常
普通
普通
正常
正常
普通

结果是 “正常”

状态
普通
正常
正常
普通
关键
普通
警告
普通

结果是 “关键”

+0

使用'if Condition' – 2014-09-04 07:28:56

回答

1

您可以使用ROWNUMBER此:

SELECT Status 
FROM (
      SELECT Status 
      ,  ROW_NUMBER() OVER(ORDER BY CASE WHEN Status = 'Critical' THEN 1 
                WHEN Status = 'Warning' THEN 2 
                WHEN Status = 'Normal' THEN 3 
                ELSE 4 
               END) RN 
      FROM  Your_Table 
     ) A 
WHERE A.RN = 1 

您可能需要添加一个PARTITION BY,根据您的其他要求。