加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL条件案例

发布时间:2020-12-12 07:00:07 所属栏目:MsSql教程 来源:网络整理
导读:我有一个表格列出项目和这些项目的状态.问题是某些项目有多个不同的状态条目.例如. HOST Status1.1.1.1 PASS1.1.1.1 FAIL1.2.2.2 FAIL1.2.3.3 PASS1.4.2.1 FAIL1.4.2.1 FAIL1.1.4.4 NULL 我需要为每个资产返回一个状态. 06001 我一直试图用T-SQL Case语句做到
我有一个表格列出项目和这些项目的状态.问题是某些项目有多个不同的状态条目.例如.
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读