Dois últimos registros SQL SERVER por coluna ordenado por data.
Bom dia, gostaria de uma ajuda para que por SELECT busque os dois últimos registros por uma determinada coluna [des_endereco] conforme exemplo da tabela
data_hora_contagem des_endereco qtd_sku_sistema qtd_sku_contagem
--------------------- ------------------------------------ ------------------ -------------------
2019-04-08 VE592 0 0
2019-05-10 VE592 0 0
2019-06-09 VE592 0 0
2019-07-23 VE592 0 0
2019-06-17 VE591 700 700
2019-07-23 VE591 0 0
2019-04-08 VE591 30 30
2019-05-08 VE590 30 30
2019-06-17 VE590 30 30
2019-07-23 VE590 0 0
2019-04-22 VE589 700 700
2019-05-09 VE589 700 700
2019-08-02 VE589 0 0
Resultado - Os dois ultimos registros de cada des_endereco
data_hora_contagem des_endereco qtd_sku_sistema qtd_sku_contagem
--------------------- ------------------------------------ ------------------ -------------------
2019-06-09 VE592 0 0
2019-07-23 VE592 0 0
2019-07-23 VE591 0 0
2019-04-08 VE591 30 30
2019-06-17 VE590 30 30
2019-07-23 VE590 0 0
2019-05-09 VE589 700 700
2019-08-02 VE589 0 0
data_hora_contagem des_endereco qtd_sku_sistema qtd_sku_contagem
--------------------- ------------------------------------ ------------------ -------------------
2019-04-08 VE592 0 0
2019-05-10 VE592 0 0
2019-06-09 VE592 0 0
2019-07-23 VE592 0 0
2019-06-17 VE591 700 700
2019-07-23 VE591 0 0
2019-04-08 VE591 30 30
2019-05-08 VE590 30 30
2019-06-17 VE590 30 30
2019-07-23 VE590 0 0
2019-04-22 VE589 700 700
2019-05-09 VE589 700 700
2019-08-02 VE589 0 0
Resultado - Os dois ultimos registros de cada des_endereco
data_hora_contagem des_endereco qtd_sku_sistema qtd_sku_contagem
--------------------- ------------------------------------ ------------------ -------------------
2019-06-09 VE592 0 0
2019-07-23 VE592 0 0
2019-07-23 VE591 0 0
2019-04-08 VE591 30 30
2019-06-17 VE590 30 30
2019-07-23 VE590 0 0
2019-05-09 VE589 700 700
2019-08-02 VE589 0 0
Andrei Passos
Curtidas 0
Respostas
Emerson Nascimento
12/08/2019
se o teu campo data_hora_contagem realmente gravar data e hora, acredito que a gambiarra abaixo ajude:
select ia.* from inventario_andrei ia left join ( select ia.des_endereco, max(ia.data_hora_contagem) dh from inventario_andrei ia group by ia.des_endereco ) gr on gr.des_endereco = ia.des_endereco where ia.data_hora_contagem = gr.dh or ia.data_hora_contagem = ( select max(ia2.data_hora_contagem) from inventario_andrei ia2 where ia2.des_endereco = ia.des_endereco and ia2.data_hora_contagem < gr.dh )
GOSTEI 0
Andrei Passos
12/08/2019
se o teu campo data_hora_contagem realmente gravar data e hora, acredito que a gambiarra abaixo ajude:
select ia.* from inventario_andrei ia left join ( select ia.des_endereco, max(ia.data_hora_contagem) dh from inventario_andrei ia group by ia.des_endereco ) gr on gr.des_endereco = ia.des_endereco where ia.data_hora_contagem = gr.dh or ia.data_hora_contagem = ( select max(ia2.data_hora_contagem) from inventario_andrei ia2 where ia2.des_endereco = ia.des_endereco and ia2.data_hora_contagem < gr.dh )
Boa tarde
Problema é que a data não é unica, ela se repete, então não traz somente os últimos dois registros. na mesma data pode aparecer mais de uma vez o mesmo endereço, tenho exemplo que mostra 4 vezes, eu precisaria buscar os últimos 2 registros.
GOSTEI 0
Emerson Nascimento
12/08/2019
Foi o que eu disse: a gambiarra funciona somente se você gravar data e hora.
Estou tentando encontrar uma solução.
GOSTEI 0