Bom dia a todos, tenho esta consulta que retorna logs com diferentes Event IDs que ocorreram nos últimos minutos:
SELECT LogEventID, LogMessage, LogTime
FROM Database.dbo.ApplLog
WHERE (LogEventID LIKE 14
OR LogEventID LIKE 20
OR LogEventID LIKE 27
OR LogEventID LIKE 40
OR LogEventID LIKE 41
OR LogEventID LIKE 42)
AND LogTime < CURRENT_TIMESTAMP
AND LogTime > DateADD(mi, -5, CURRENT_TIMESTAMP);
Os resultados são assim, por exemplo:
LogEventID | Mensagem de registro |
---|---|
42 | Erro ao transmitir novo Incidente XYZ |
42 | Erro ao transmitir novo Incidente XYZ |
20 | Erro ao transmitir o Incidente XYZ atualizado |
Existem mais 4 EventIDs. Na maioria das vezes, os outros EventIDs não produzem logs. Em nossa solução de monitoramento, configurei um sensor que executa essa consulta regularmente. Resumindo, não consigo configurar o sensor corretamente porque nem todos os EventIDs produziram logs nos últimos minutos ao mesmo tempo.
Minha pergunta é: como faço para gerar linhas falsas com todos os LogEventIDs, mas LogMessages vazios, para que eu tenha todos os LogEventIDs que não produziram logs nos últimos minutos, em todos os resultados de consulta junto com os que produziram? Algo assim:
LogEventID | Mensagem de registro |
---|---|
42 | Erro ao transmitir novo Incidente XYZ |
42 | Erro ao transmitir novo Incidente XYZ |
20 | Erro ao transmitir o Incidente XYZ atualizado |
14 | |
27 | |
40 | |
41 |
Eu vi este post , mas não entendo a solução e é muito mais complicado do que (parece) que precisa ser. Obrigado pela ajuda antecipadamente.
EDIT: Aqui estão as definições da tabela conforme solicitado. Espero que estas sejam as definições de tabela:
"Linhas vazias" surgem através do uso de "Outer Joins".
Você precisa de uma "tabela fictícia" dos IDs nos quais está interessado e, em seguida, "junta-a à esquerda" à tabela de log real, algo como isto (não testado).
Observe que o filtro na tabela "junção externa" foi movido para a condição de junção .
Se você tentar usar uma cláusula where em um campo na tabela de junção externa, a maioria dos SGBDs "reduzirá" a junção para uma tabela regular, "interna".