Quantidade Acumulada
10/01/2010
0
Olá pessoal:
Gostaria de uma colaboração de vocês (Banco Firebird):
Tenho:
select codigo_produto , quantidade_vendida from vendas
union
select codigo_produto, quantidade_comprada from compras gostaria que retornasse, o seguinte: ---------------------------------------------------
Codigo_produto Quantidade Quantidade_acumulada(por linha) Exemplo: =====================================================
Codigo Quantidade Quantidade_Acumulada Operacao
====================================================
1 24 24 Venda
2 6 30 venda
3 4 34 venda
2 3 31 compra
1 8 23 compra
1 24 47 Venda
====================================================
Já consegui usando uma Stored Procedure com Union (em Firebird)
exceto o campo "Quantidade acumulada".
Obrigado pessoal.. Obs: Sem fazer média. Três coisas muito boas (Site Devmedia, Firebird e Delphi (principalmente 0
7), qum não as conhece não sabe o que está perdendo... Obrigado a todos
union
select codigo_produto, quantidade_comprada from compras gostaria que retornasse, o seguinte: ---------------------------------------------------
Codigo_produto Quantidade Quantidade_acumulada(por linha) Exemplo: =====================================================
Codigo Quantidade Quantidade_Acumulada Operacao
====================================================
1 24 24 Venda
2 6 30 venda
3 4 34 venda
2 3 31 compra
1 8 23 compra
1 24 47 Venda
====================================================
Já consegui usando uma Stored Procedure com Union (em Firebird)
exceto o campo "Quantidade acumulada".
Obrigado pessoal.. Obs: Sem fazer média. Três coisas muito boas (Site Devmedia, Firebird e Delphi (principalmente 0
7), qum não as conhece não sabe o que está perdendo... Obrigado a todos
Hermes Silva
Curtir tópico
+ 0
Responder
Posts
11/01/2010
Emerson Nascimento
tente algo assim:
create procedure XXXX
returns(
codigo integer,
quantidade double precision,
acumulado double precision,
operacao varchar(6)
)
begin
acumulado = 0;
for select codigo_produto, quantidade_vendida, 'Venda' from vendas [where]
union
select codigo_produto, quantidade_comprada, 'Compra' from compras [where]
into :codigo, :quantidade, :operacao
do
begin
if (:operacao = 'Venda')
acumulado = acumulado + quantidade;
else
acumulado = acumulado - quantidade;
suspend;
end;
end;
create procedure XXXX
returns(
codigo integer,
quantidade double precision,
acumulado double precision,
operacao varchar(6)
)
begin
acumulado = 0;
for select codigo_produto, quantidade_vendida, 'Venda' from vendas [where]
union
select codigo_produto, quantidade_comprada, 'Compra' from compras [where]
into :codigo, :quantidade, :operacao
do
begin
if (:operacao = 'Venda')
acumulado = acumulado + quantidade;
else
acumulado = acumulado - quantidade;
suspend;
end;
end;
Responder
17/01/2010
Devmedia
Gostaria de agradecer ao forun Devmedia e em particular ao EMERSON E. DO NASCIMENTO
pela solução apresentada, era isso mesmo qu eu queria, e olhe que eu levei algumas horas
tentando, muito obrigado EMERSON.
Responder
Clique aqui para fazer login e interagir na Comunidade :)