Selecionar o ID correto com base na maior data
29/06/2017
0
Eu tenho a seguinte tabela:
ID_TRAMITACAO ag_data_hora data_hora_lan
4157189 2016-08-08 00:00:00.000 2016-08-08 14:58:13.000
4206011 2016-08-15 00:00:00.000 2016-08-14 10:55:06.000
7629112 2017-06-08 00:00:00.000 2017-06-07 13:33:20.000
7848284 2017-07-07 00:00:00.000 2017-06-29 09:10:48.000
7848289 2017-06-30 00:00:00.000 2017-06-29 09:11:06.000
Eu preciso achar a maior "ag_data_hora", mas preciso manter o "id_tramitacao" da mesma, pois o "ID" é a chave do registro.
Já tentei "N" formas de resolver a questão, mas se faço o MAX(ag_data_hora), fico sem a chave, e se agrupo pelo ID, claro que não agrupa porque tenho registros diferentes.
Na prática o que preciso obter é, considerando o exemplo acima:
ID_TRAMITACAO ag_data_hora data_hora_lan
7848284 2017-07-07 00:00:00.000 2017-06-29 09:10:48.000
Alguém consegue me ajudar?
Obrigado
Antonio Fratucci
Posts
29/06/2017
Fabiano Carvalho
DECLARE @DADOS TABLE (ID_TRAMITACAO INT,ag_data_hora DATETIME,data_hora_lan DATETIME) INSERT INTO @DADOS VALUES (4157189,'2016-08-08 00:00:00.000', '2016-08-08 14:58:13.000'), (4206011,'2016-08-15 00:00:00.000', '2016-08-14 10:55:06.000'), (7629112,'2017-06-08 00:00:00.000', '2017-06-07 13:33:20.000'), (7848284,'2017-07-07 00:00:00.000', '2017-06-29 09:10:48.000'), (7848289,'2017-06-30 00:00:00.000', '2017-06-29 09:11:06.000') SELECT * FROM @DADOS WHERE data_hora_lan = (SELECT MAX(DATA_HORA_LAN) FROM @DADOS)
30/06/2017
Lincon Silva
Você pode dar um order by pela [DATA_HORA_LAN] e adicionar um top 1 no select, ou seja, você colocaria o valor desejado no topo e apenas apresentaria ele.
tipo:
SELECT TOP 1 [ID_TRAMITACAO] FROM [SUA_TABELA] ORDER BY [DATA_HORA_LAN] DESC
Abraços
03/07/2017
David Styveen
Acredito que a maneira com melhor desempenho é a seguinte:
select * from tabela where ag_data_hora = (select max(ag_data_hora) from tabela t)
A partir disso, você pode melhorar e adaptar a sua necessidade.
Abraços
Clique aqui para fazer login e interagir na Comunidade :)