Array
(
)

Ajuda para a montagem de Query

Paganato
   - 23 set 2004

Bom dia a todos.
Estou tentando contruir uma query(sql) para calculo de saldo, registro a registro. Vou explicar melhor:
Tenho a seguinte tabela:

estoque
-------------------
est_controle Int
est_data Date
est_descricao Varchar(50)
est_tipo Char(1)
est_quantidade Int

O q eu quero fazer é uma consulta onde ele me retorne uma nova coluna com o saldo, isso registro a registro, da seguinte forma:

data descricao tipo quantidade saldo
20/09/2004 saldo 0 100
20/09/2004 Entrada E 50 150
21/09/2004 Saida S 10 140
22/09/2004 Saida S 30 110
23/09/2004 Entrada E 100 210

Caso alguem possua uma ideia, sera bem aceita...


Motta
   - 23 set 2004

Alexandre, dá para ser mais claro ?


Vinicius2k
   - 23 set 2004

Colega,

Além de detalhar o que vc precisa, vc também precisa detalhar quais as ferramentas que vc está utilizando...
O seu caso é, relativamente, simples mas só posso ajudar-lhe com suposições...
Supondo que seu banco de dados, que vc não informou qual, permita o uso de Stored Procedures e, também supondo que vc possa utilizá-las (as SPs) na sua aplicação, seria uma SP parecida com esta, mas lembre-se de que, principalmente as definições de tipo variam de SGBD para outro e esta eu construí no Firebird:
#Código

create procedure SP_DCESTOQUE
returns
(
DATA date,
DESCRICAO varchar(50),
TIPO char(1),
QUANTIDADE integer,
SALDO integer
)
as
declare variable SALDOANT integer;
begin
SALDOANT = 0;
for select E.EST_DATA, E.EST_DESCRICAO, E.EST_TIPO, E.EST_QUANTIDADE
from ESTOQUE E
into :DATA, :DESCRICAO, :TIPO, :QUANTIDADE
do begin
if (TIPO = ´E´) then SALDO = SALDOANT + QUANTIDADE;
else SALDO = SALDOANT - QUANTIDADE;
SALDOANT = SALDO;
suspend;
end
end
^


No meu entender, uma SP é a melhor forma de fazer o que vc pretende... outras formas teriam q ser via laço (while not eof) dentro da aplicação...

Esta procedure é ´basica´, inclusive sem parametros de entrada, o que tbm no meu entender, não está correto, porque para obter este ´extrato´ de movimentação do estoque, vc teria que informar um produto específico, mas não vejo um código de produto na sua tabela de estoque...

Espero ter ajudado...
T+