[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