首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要在oracle sql查询的print语句中获取错误和id。

需要在oracle sql查询的print语句中获取错误和id。
EN

Stack Overflow用户
提问于 2020-06-09 16:01:49
回答 1查看 80关注 0票数 0

我需要一个查询来打印一些4-5个错误的if条件与id。需要检查每个错误与它的发生时,它发生了5次,然后需要检查id。如果错误的id相同,则需要打印该错误和相关的id。

代码语言:javascript
复制
select id from table1  where
data like '% System is down%'
and date>= '05-SEP-15 07.55.00.000000000 PM' and date<= '05-SEP-15 07.59.00.000000000 PM'  
having count(id)>=2 group by id;

我需要在if语句中写这段代码。如果"system down“以相同的id "1”出现5次,则需要打印为id为1的system down。否则,id为1的通信错误发生,则需要打印为"Communication error with id: 1“,如下所示。

EN

回答 1

Stack Overflow用户

发布于 2020-06-09 18:37:57

与您的需求混淆,但您可以调整这些值以获得所需的结果

代码语言:javascript
复制
     SELECT DISTINCT id,
                    CASE
                        WHEN count(*) over(PARTITION BY id) >=5 THEN 'System Down'
                        WHEN count(*) over(PARTITION BY id) < 5 THEN 'Communication Error'
                    END AS status
    FROM table1
    WHERE DATA LIKE '% System is down%'
      AND date>= '05-SEP-15 07.55.00.000000000 PM'
      AND date<= '05-SEP-15 07.59.00.000000000 PM'

or


    SELECT id,
           CASE
               WHEN cnt>=5 THEN 'System Down'
               ELSE
               WHEN cnt < 5 THEN 'Communication error'
           END status
    FROM
      (SELECT id,
              count(id) cnt
       FROM table1
       WHERE DATA LIKE '% System is down%'
         AND date>= '05-SEP-15 07.55.00.000000000 PM'
         AND date<= '05-SEP-15 07.59.00.000000000 PM'
       HAVING count(id)>=2
       GROUP BY id)

附言:-不确定大约有1次,但如果你想只出现一次,需要注释掉having子句(在第二个方法中),并将第二个in case子句设置为=1

编辑:-您可以使用case when >=5 then 'system down' else 'communication error'删除第二个when子句

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62277779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档