Duvida Procedure para Somar o Total por Forma de Pagamento
Galera estou criando uma procedure para somar o total do caixa por forma de pagamento
ex: Forma de Pagamento | Credito | Debito
Dinheiro 100,00 20,00
Cheque a Vista 0,00 0,00
Cartão 200,00 0,00
A procedure que esta abaixo está calculando corretamente, o problema é que só aparece a primeira forma de pagamento
ex: Forma de Pagamento | Credito | Debito
Dinheiro 100,00 20,00
Cheque a Vista 0,00 0,00
Cartão 200,00 0,00
A procedure que esta abaixo está calculando corretamente, o problema é que só aparece a primeira forma de pagamento
CREATE PROCEDURE sp_caixa_total (
datamov date)
returns (
FormaPgto varchar(45),
TotalCredito numeric(18,2),
TotalDebito numeric(18,2))
as
declare variable credito numeric(18,2);
declare variable debito numeric(18,2);
declare variable Forma varchar(45);
BEGIN
for
select
vw_caixa.fpgto_descricao
from
vw_caixa
where
cast(vw_caixa.data_cad as date) = :DataMov
into :FormaPgto
do
FOR
select
/*(+) ||*/ vw_caixa.fpgto_descricao ,
coalesce(sum(vw_caixa.cx_valor_pago),0)
from
vw_caixa
where
vw_caixa.cx_operacao = (+) CREDITO and
cast(vw_caixa.data_cad as date) = :DataMov
group by vw_caixa.fpgto_descricao
INTO :Forma,
:TotalCredito
DO
/* BEGIN
SUSPEND;
END */
for
select
/*(--) ||*/ vw_caixa.fpgto_descricao ,
coalesce(sum(vw_caixa.cx_valor_pago),0)
from
vw_caixa
where
vw_caixa.cx_operacao = (--) DEBITO and
cast(vw_caixa.data_cad as date) = :DataMov
group by vw_caixa.fpgto_descricao
INTO :Forma,
:TotalDebito
DO
credito = 0;
debito = 0;
BEGIN
if (Forma = :FormaPgto) then
credito = :TotalCredito;
else
debito = TotalDebito;
SUSPEND;
END
END
Sidney Abreu
Curtidas 0
Respostas
Emerson Nascimento
25/01/2012
nem é preciso criar uma stored procedure.
creio que uma instrução simples resolva seu problema:
select
○ fpgto_descricao tipopagto,
○ sum(case when cx_operacao = CREDITO then vw_caixa.cx_valor_pago else 0 end) credito,
○ sum(case when cx_operacao = DEBITO then vw_caixa.cx_valor_pago else 0 end) debito
from
○ vw_caixa
where
○ cast(data_cad as date) = :DataMov
group by
○ fpgto_descricao
creio que uma instrução simples resolva seu problema:
select
○ fpgto_descricao tipopagto,
○ sum(case when cx_operacao = CREDITO then vw_caixa.cx_valor_pago else 0 end) credito,
○ sum(case when cx_operacao = DEBITO then vw_caixa.cx_valor_pago else 0 end) debito
from
○ vw_caixa
where
○ cast(data_cad as date) = :DataMov
group by
○ fpgto_descricao
GOSTEI 0
Emerson Nascimento
25/01/2012
nem é preciso criar uma stored procedure.
creio que uma instrução simples resolva o seu problema:
select
fpgto_descricao tipopagto,
sum(case when cx_operacao = CREDITO then vw_caixa.cx_valor_pago else 0 end) credito,
sum(case when cx_operacao = DEBITO then vw_caixa.cx_valor_pago else 0 end) debito
from
vw_caixa
where
cast(data_cad as date) = :DataMov
group by
fpgto_descricao
creio que uma instrução simples resolva o seu problema:
select
fpgto_descricao tipopagto,
sum(case when cx_operacao = CREDITO then vw_caixa.cx_valor_pago else 0 end) credito,
sum(case when cx_operacao = DEBITO then vw_caixa.cx_valor_pago else 0 end) debito
from
vw_caixa
where
cast(data_cad as date) = :DataMov
group by
fpgto_descricao
GOSTEI 0
Sidney Abreu
25/01/2012
Show de bola, valeu amigo
GOSTEI 0