Eliminar linhas redundantes
15/05/2019
0
Tenho o seguinte resultado de uma query:
Job Rerun Data_Inicio Status
br_cbss_CSGD044 1 2019-05-02 11:33:00.073 200
br_cbss_CSGD044 2 2019-05-02 11:33:00.073 200
br_cbss_PagFor_WF 1 2019-05-02 11:33:19.123 200
br_cbss_Mov_PagFor 1 2019-05-02 11:32:59.637 200
br_cbss_CSGD044 1 2019-05-02 11:32:56.270 200
br_cbss_CSGD044 2 2019-05-02 11:32:56.270 200
br_cbss_PagFor_WF 1 2019-05-02 11:33:15.460 200
br_cbss_Mov_PagFor 1 2019-05-02 11:32:55.897 200
br_cbss_CSGD044 2 2019-05-02 11:32:52.623 200
br_cbss_CSGD044 1 2019-05-02 11:32:52.623 200
br_cbss_PagFor_WF 1 2019-05-02 11:33:10.277 200
br_cbss_Mov_PagFor 1 2019-05-02 11:32:52.217 200
br_cbss_CSGD044 2 2019-05-02 11:32:47.433 200
br_cbss_CSGD044 1 2019-05-02 11:32:47.433 200
br_cbss_PagFor_WF 1 2019-05-02 11:33:05.107 200
br_cbss_Mov_PagFor 1 2019-05-02 11:32:47.040 200
Como vocês podem ver, tenho algumas linhas duplicadas que significam que o "Job", por algum motivo, foi executado duas vezes.
Gostaria que esta query só me mostrasse, nesses casos, a linha onde o Rerun tem o maior valor, descartando a(s) anterior(es).
A query está montada assim:
declare @data_inicial varchar(20)
declare @data_final varchar(20)
--set @data_inicial = convert(varchar(10),DateAdd(DAY,-1,GetDate()),120) + ' 06:00:00'
set @data_inicial = '2019-05-02 00:00:00'
set @data_final = '2019-05-02 23:59:59'
--set @data_final = convert(varchar(10), GetDate(),120) + ' 05:59:59'
select H.name as Job,
E.attempt_count as Rerun,
H.start_time Data_Inicio,
H.status_code as status
from dbo.ops_history H inner join dbo.ops_exec E
on H.task_id = E.task_id
where H.name like 'br_cbss%'
and LEFT(CONVERT(varchar, DATEADD(hh,-3,H.sys_updated_on), 20), 20) between @data_inicial and @data_final
and H.status_code in (140,180,190,200)
group by H.name, E.attempt_count, H.start_time, H.status_code, H.sys_updated_on
order by H.sys_updated_on desc
Agradeço a quem conseguir me ajudar.
Abs,
Aloysio Coutinho
Post mais votado
15/05/2019
select H.name as Job, max(E.attempt_count) as Rerun, H.start_time Data_Inicio, H.status_code as status from dbo.ops_history H inner join dbo.ops_exec E on H.task_id = E.task_id where H.name like 'br_cbss%' and LEFT(CONVERT(varchar, DATEADD(hh,-3,H.sys_updated_on), 20), 20) between @data_inicial and @data_final and H.status_code in (140,180,190,200) group by H.name, H.start_time, H.status_code, H.sys_updated_on order by H.sys_updated_on desc
Emerson Nascimento
Mais Posts
15/05/2019
Aloysio Coutinho
Obrigado pelo seu retorno.
Já havia tentado esta opção. Retorna o mesmo resultado, como se ignorasse esta cláusula.
Abs,
16/05/2019
Emerson Nascimento
note que no agrupamento que eu apresentei não há referência ao campo E.attempt_count.
16/05/2019
Aloysio Coutinho
Verdade. Não havia notado isso. Dessa forma funcionou.
Vlw. Muito obrigado pela força.
Abs,
Clique aqui para fazer login e interagir na Comunidade :)