我需要一个查询来打印一些4-5个错误的if条件与id。需要检查每个错误与它的发生时,它发生了5次,然后需要检查id。如果错误的id相同,则需要打印该错误和相关的id。
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“,如下所示。
发布于 2020-06-09 18:37:57
与您的需求混淆,但您可以调整这些值以获得所需的结果
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子句
https://stackoverflow.com/questions/62277779
复制相似问题