Ajuda para a montagem de Query
23/09/2004
0
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...
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
Curtir tópico
+ 0
Responder
Posts
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:
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+
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
Clique aqui para fazer login e interagir na Comunidade :)