Tenho 2 tabelas…
PRODUTOS
CODIGO NOME
0001 PRO 1
0002 PRO 2
0003 PRO 3
LANCAMENTOS
CODIGO DATA VALOR TIPO
0001 01/01/08 4,95 E
0001 13/03/08 9,85 E
0001 27/04/08 8,95 E
0001 27/04/08 7,95 E
0001 27/04/08 6,95 E
0001 01/05/08 3,95 E
0002 01/01/08 4,95 E
0002 13/03/08 6,55 E
0002 13/03/08 5,66 E
0002 01/05/08 3,95 E
0003 23/06/08 1,95 E
Preciso trazer o último valor da última data…
O resultado esperado para uma consulta da data 30/04/2008 seria:
0001 PRO1 27/04/08 8,95 E
0002 PRO2 13/03/08 6,66 E
0003 PRO3 – – –
Usei:
select codigo,data,valor from lancamentos LANPRO where data IN (select max(data) from lancamentos LANDATA where landata.data<'30/04/08' and landata.codigo=lanpro.codigo) order by codigo
Funciona... o problema é que tendo lancamentos com datas repetidas ele traz o seguinte:
0001 PRO1 27/04/08 8,95 E
0001 PRO1 27/04/08 7,95 E
0001 PRO1 27/04/08 6,95 E
0002 PRO2 13/03/08 6,66 E
0002 PRO2 13/03/08 5,66 E
0003 PRO3 - - -
E não posso ter registros repetidos.
Alguem tem alguma sugestão?