[firebase-br] Dúvida com Procedure com Datas

Euler Jr. euler em siginformatica.com.br
Qui Jul 14 11:15:49 -03 2005


Esta SP poderá auxiliá-lo:


SET TERM # ;
ALTER PROCEDURE SP_ULTIMO_VALOR(DIA DATE) RETURNS(VALOR FLOAT) AS
DECLARE VARIABLE DIA_ANT DATE;
BEGIN
SELECT MAX(DATA) FROM CAIXA WHERE DATA < :DIA INTO :DIA_ANT;
SELECT MAX(VALOR) FROM CAIXA WHERE DATA = :DIA_ANT INTO :VALOR;
END #
SET TERM ; #

Como podem existir vários valores para o mesmo dia, a SP está trazendo o 
maior deles. Vc teria que especificar uma coluna que indicasse uma 
sequência, por exemplo. Assim poderia se obter a última sequência 
daquele dia. Modificando a SP, ficaria assim:

SELECT MAX(SEQUENCIA) FROM CAIXA WHERE DATA = :DIA_ANT INTO :SEQUENCIA;
SELECT VALOR FROM CAIXA WHERE DATA = :DIA_ANT AND SEQUENCIA = :SEQUENCIA 
INTO :VALOR;

Os dados armazenados em SQL não são iguais ao xBASE, onde numa tabela 
sem índice tem-se os registros sequencialmente, na ordem de gravação.

[]s
Euler Jr.

Fellipe Henrique escreveu:

>Olá, tenho a seguinte tabela: Caixa, com os campos:
>    Descricao
>    Data
>    Valor
>
>nela eu tenho varios registros, como por exemplo:
>
>
>
>      1  20/01/2005   520,00
>      2  20/01/2005     20,00
>      3  20/01/2005       1,00
>      4  20/01/2005   820,00
>      5  25/01/2005   120,00
>      6  25/01/2005   587,00
>      7  28/01/2005   271,00
>      8  20/02/2005   197,00
>      9  20/02/2005     25,00
>
>
>
>Pois bem, queria uma procedure que me retornasse o valor do ultimo registro
>de um dia antes que eu passaria, exemplo:
>
>-> Data: 25/01/2005
>
>Me retornaria o Valor de 820,00
>
>-> Data: 28/01/2005
>
>Me retornaria o Valor de 587,00
>
>
>Sempre o ultimo registro ate um dia antes do dia que eu forneci.
>
>Como eu faço isso? qual o camando na procedure eu devo fazer?
>
>Desde já agradeço
>
>
>[]s
>Fellipe H.
>
>
>
>
>
>  
>
>------------------------------------------------------------------------
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>




Mais detalhes sobre a lista de discussão lista