Eliminar linhas redundantes
Olá pessoAll,
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,
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
Curtidas 0
Melhor post
Emerson Nascimento
15/05/2019
tente assim:
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
GOSTEI 1
Mais Respostas
Aloysio Coutinho
15/05/2019
Boa noite Emerson,
Obrigado pelo seu retorno.
Já havia tentado esta opção. Retorna o mesmo resultado, como se ignorasse esta cláusula.
Abs,
Obrigado pelo seu retorno.
Já havia tentado esta opção. Retorna o mesmo resultado, como se ignorasse esta cláusula.
Abs,
GOSTEI 0
Emerson Nascimento
15/05/2019
tem certeza??? você testou a instrução que eu te passei?
note que no agrupamento que eu apresentei não há referência ao campo E.attempt_count.
note que no agrupamento que eu apresentei não há referência ao campo E.attempt_count.
GOSTEI 0
Aloysio Coutinho
15/05/2019
Bom dia Emerson,
Verdade. Não havia notado isso. Dessa forma funcionou.
Vlw. Muito obrigado pela força.
Abs,
Verdade. Não havia notado isso. Dessa forma funcionou.
Vlw. Muito obrigado pela força.
Abs,
GOSTEI 0