KB-108744: Retornando os alarmes ativos do Elipse E3 através do banco de dados.

Descrição:

Como posso retornar os alarmes ativos do Elipse E3 através dos registros do banco de dados?

Solução:

Para retornar os alarmes ativos do Elipse E3, tendo eles sido reconhecidos ou não, deve-se realizar a seguinte consulta:

SELECT * FROM Alarms RIGHT JOIN 
(SELECT * FROM (SELECT Min(EventCLSID) AS EventCLSID, SUM(OutTimeDbl) AS OutTimeDbl FROM Alarms
WHERE InTime > DATEADD(hh, -48, GETDATE()) 
GROUP BY EventCLSID)tbA 
WHERE OutTimeDbl = 0)tbB ON Alarms.EventCLSID = tbB.EventCLSID

 

O resultado desta consulta está representado na figura abaixo:

retornar alarmes ativos elipse e3

Vamos explicar este resultado em partes.

Antes de tudo, a primeira consulta utilizada serve para agrupar os CLSIDs das últimas 48 horas e somar os dados do parâmetro OutTimeDbl. Desta forma, saberemos todos os alarmes gravadas durante este período.

 

SELECT Min(EventCLSID) AS EventCLSID, SUM(OutTimeDbl) AS OutTimeDbl FROM Alarms
WHERE InTime > DATEADD(hh, -48, GETDATE())
GROUP BY EventCLSID

Logo após, a segunda parte serve para separar apenas os CLSIDs cujos valores do parâmetro OutTimeDbl é igual a zero, o que significa que este alarme ainda não saiu da condição:

 

SELECT * FROM (SELECT Min(EventCLSID) AS EventCLSID, SUM(OutTimeDbl) AS OutTimeDbl FROM Alarms
WHERE InTime > DATEADD(hh, -48, GETDATE())
GROUP BY EventCLSID)tbA
WHERE OutTimeDbl = 0

Afinal, a última consulta, que é a primeira deste artigo, retorna os alarmes cujo CLSIDs são iguais ao retornados pela consulta acima. Desta forma, teremos os registros de alarmes que ainda não saíram da condição de ativos.

Para retornar somente os alarmes que continuam ativos em seu momento de entrada, deve-se criar um filtro pelos valores do parâmetro Acked, conforme consulta abaixo:

 

SELECT * FROM Alarms RIGHT JOIN 
(SELECT * FROM (SELECT Min(EventCLSID) AS EventCLSID, SUM(OutTimeDbl) AS OutTimeDbl FROM Alarms WHERE InTime > DATEADD(hh, -48, GETDATE()) 
GROUP BY EventCLSID)tbA 
WHERE OutTimeDbl = 0)tbB ON Alarms.EventCLSID = tbB.EventCLSID
WHERE Acked = 0

Resultado da consulta:


consulta retorna alarmes ativos elipse e3

NOTA: Neste artigo, o banco de dados utilizado para elaborar as consultas foi o Microsoft SQL Server.

Artigos Relacionados:


Este artigo foi útil? Was this post helpful?
Yes0
No0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *