Retornar os dois últimos registro de cada id
16/11/2020
0
Tenho o seguinte senario.
Tab Venda -> idvenda, idcliente, dtvenda, totvalor
tab cliente -> idcliente, nome
---------------------------------------------------------------------------------------
tab Venda
idvenda idcliente dtvenda totvalor
1 1 01/02/2020 R$ 10,00
2 4 01/02/2020 R$ 5,00
3 10 01/02/2020 R$ 4,00
4 1 07/02/2020 R$ 2,00
5 2 07/02/2020 R$ 1,00
6 1 15/02/2020 R$ 15,00
---------------------------------------------------------------------------------------
Estou tentando criar um select que traga todos os clientes cadastrado, juntamente com as duas ultimas vendas.
Ex: cliente id =1 , ira retornar as vendas do dia 15/02 - 15,00 e 07/02 - 2,00.
OBS: Caso consiga trazer as duas ultimas vendas de cada cliente, usando somente a tabela venda, já ajuda e muito.
Com esse select abaixo retorna somente a ultima venda, nesse caso preciso ultima e antepenúltima.
select v1.cliente,v1.dtvenda,v1.totgeral,v1.vendacontador from est007 v1
join
(select cliente,max(vendacontador) as ultimavenda from est007 group by cliente)v2
on v2.cliente = v1.cliente and v2.ultimavenda=v1.vendacontador
order by v1.cliente
Deosvaldo
Posts
16/11/2020
Emerson Nascimento
select tv.* from tabevenda tv where tv.idvenda in (select first 2 tv2.idvenda from tabvenda tv2 where tv2.idcliente = tv.idcliente order by tv2.dtvenda desc) order by tv.idcliente, tv.dtvenda
17/11/2020
Deosvaldo
Ja havia tentado usar esse select, porem ele retorna mais de 2 registro.
17/11/2020
Emerson Nascimento
acabei de testar e retorna no máximo 2 registros por cliente.
17/11/2020
Deosvaldo
Desculpa a demora em responder, muita demanda aqui na empresa
Realmente funcionou, eu que não tinha percebido um erro q havia cometido.
Muito obrigado.
Clique aqui para fazer login e interagir na Comunidade :)