我有一个表格列出项目和这些项目的状态.问题是某些项目有多个不同的状态条目.例如.
HOST Status 1.1.1.1 PASS 1.1.1.1 FAIL 1.2.2.2 FAIL 1.2.3.3 PASS 1.4.2.1 FAIL 1.4.2.1 FAIL 1.1.4.4 NULL
我需要为每个资产返回一个状态.
06001
我一直试图用T-sql Case语句做到这一点,但不能完全正确.
条件是任何通行证任何通行证,失败否结果是失败,空无效.
解决方法
尝试使用case语句转换为有序结果并对其进行分组,最后,您需要转换回漂亮的,人类可读的答案:
with cte1 as ( SELECT HOST,[statNum] = case when Status like 'PASS' then 2 when Status like 'FAIL' then 1 else 0 end FROM table ) SELECT HOST,case max(statNum) when 2 then 'PASS' when 1 then 'FAIL' else 'No Results' end FROM cte1 GROUP BY HOST
注意:我使用CTE语句希望使事情更清晰,但所有事情都可以在一个SELECT中完成,如下所示:
SELECT HOST,[Status] = case max(case when Status like 'PASS' then 2 when Status like 'FAIL' then 1 else 0 end) when 2 then 'PASS' when 1 then 'FAIL' else 'No Result' end FROM table
原文地址:https://www.jb51.cc/mssql/77256.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。