Fórum Como fazer sql p/ recuperar saldo anterior #278532
22/04/2005
0
Possuo uma tabela chamada SALDOS com saldo anterior onde tenho os campos
Sequencia,data, valor, fabrica
Necessito recuperar apenas um registro do saldo anterior via SQL, onde
tenho várias datas c/saldo. Apenas a Anterior ao período Informado.
Tenho tentado mas não consegui. Será que algum dos nossos nobres colegas poderiam me ajudar?
Até +
Sds/Hélio
Helio Nascimento
Curtir tópico
+ 0Posts
22/04/2005
Robsons
Primeiro passo seria descobrir a data anterior a primeira data no periodo informado, depois com uma instrucao Sql buscar na tabela o registro desejado...
( Select valor from saldos
where data = :<dataanterior>)
[]s,
Robson.
Gostei + 0
25/04/2005
Helio Nascimento
For Select Data_Saldo, Valor_Saldo from SALDOS
Where (cod_fabrica = :pCod_Fabrica) and (Data_Saldo < :pData_Movimento)
order by Data_Saldo DESC
INTO :Data, :Valor
do
Begin
if (:Data=null) then data= :Data_Movimento - 1;
if (:Valor = null) then valor = 0;
suspend;
end
é Retornado todos os registros menor que o movimento atual, a questão é descobrir apenas o primeiro registro que está ordenado inversamente.Explico melhor. Suponhamos os registros
:Cod_Fabrica = 3 - :Data_Movimento = ´25/04/05´
Na Tabela Saldos tenhos os Registros
Fábrica - Data - Saldo
3 05/04/05 - 20,00
3 10/04/05 - 85,00
3 18/04/05 - 15,00
Esta STORE PROCEDURE - dentro do Interbase traz todos os registros em ordem
inversa assim sendo:
Fabrica - Data Saldo
3 18/04/05 15,00
3 10/04/05 85,00
3 05/04/05 20,00
Eu só preciso que ela me retorne apenas um registro ou seja :
Fábrica Data Saldo
3 18/04/05 15,00
Se eu der um EXIT após o SUSPEND eu saio da Procedure e não é o
caso pois logo abaixo tenho outros processamentos recuperando outros
registros que juntando com o Saldo que acumula em uma variável, fára
a continuação do que preciso. Será que me fiz entender?
O Negócio é descobrir como trazer apenas um registro e contirnuar o processamento dentro desta STORE PROCEDURE.
Gratos - Hélio
Gostei + 0
25/04/2005
Robsons
Modifiquei sua consulta como mostro abaixo, tente e veja se funciona.ok ?
usei o top <no de linhas> para trazer a qtde de linhas desejada..
abraços...
Robson.
For Select top 1 Data_Saldo, Valor_Saldo from SALDOS
Where (cod_fabrica = :pCod_Fabrica) and (Data_Saldo < :pData_Movimento)
order by Data_Saldo DESC
Gostei + 0
26/04/2005
Helio Nascimento
Obrigado por ter respondido a minha questão.Irei testá-la e se der certo ou não volto ao assunto até porque outros colegas poderão fazer pesquisas e achar resposta satisfatória p/seus problemas. Não sabia deste comando TOP
Saudações/Hélio
Gostei + 0
26/04/2005
Robsons
fico no aguardo
Gostei + 0
27/04/2005
Helio Nascimento
Acho que este é para outro Banco de Dados. Se Tiver alguma outra ideia estarei no aguardo.
Sds/Hélio
Ps.Ah ia me esquecendo, teria uma outra ideia. Mas não sei como implementá-la. Seria confecçionar outra Store Procedure e Chamá-la de dentro desta que estou com problemas. Explico melhor: Seria fazer uma SQL igual mas com um exit após o Suspend; assim retornaria a 1º registro que seria repassado para a SQL que estou processando. Agora não sei como chamar uma Store Procedure dentro de outra.
Gostei + 0
28/04/2005
Helio Nascimento
Gostei + 0
02/05/2005
Helio Nascimento
Gostei + 0
02/05/2005
Gandalf.nho
Gostei + 0