Ajuda para a montagem de Query

23/09/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...


Paganato

Respostas

23/09/2004

Motta

Alexandre, dá para ser mais claro ?


Responder Citar

23/09/2004

Vinicius2k

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:
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+


Responder Citar