[firebase-br] Consulta Estoque

Eduardo Bahiense eduardo em icontroller.com.br
Qui Mar 18 08:41:09 -03 2010


A query abaixo, que funciona a partir do FB 1.5, vai resolver, mas você 
terá que analisar bem o plano de índices dessa tabela para que ela seja 
eficiente. Pelo menos um índice em PRODUTO, DATA será necessário.

Outra coisa, se houver dois registros de saldo de um produto no mesmo 
dia, vai duplicar linhas.

SELECT
   A.PRODUTO, A.DATA, B.SALDO, B.CUSTO
FROM
   (
   SELECT
     PRODUTO, MAX(DATA)
   FROM
     ESTOQUE
   WHERE
     DATA <= '03.01.2010'
   GROUP BY 1
   ) A
   LEFT JOIN ESTOQUE B ON A.PRODUTO=B.PRODUTO AND A.DATA=B.DATA


Haroldo Dias escreveu:
> Bom dia a todos
> Eu tenho a seguinte tabela:
>       PRODUTO DATA SALDO CUSTO MEDIO
>       1 01/01/2010 123 1,02
>       1 02/01/2010 124 1,02
>       1 03/01/2010 122 1,02
>       1 04/01/2010 128 1,03
>       1 05/01/2010 120 1,03
>       2 29/12/2009 213 2,55
>       2 01/01/2010 216 2,55
>       2 02/01/2010 218 2,55
>       2 05/01/2010 219 2,55
>       2 06/01/2010 220 2,49
>       2 07/01/2010 210 2,49
>       3 30/12/2009 306 3,11
>       3 31/12/2009 305 3,11
>       3 01/01/2010 300 3,11
>       3 08/01/2010 301 3,11
>       3 09/01/2010 300 3,31
>       3 10/01/2010 330 3,31
>       3 11/01/2010 329 3,31
> 
> E preciso fazer uma consulta que me retorne o saldo dos produtos no dia 
> 03/01/2010:
>       PRODUTO DATA SALDO CUSTO MEDIO
>       1 03/01/2009 122 1,02
>       2 02/01/2010 218 2,55
>       3 01/01/2010 300 3,11
> 
> Como faço? Uso o Firebird 2.1
> 
> Atenciosamente,
> Haroldo Dias
> 
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista