[firebase-br] Ajuda em stored procedure
Eduardo Jedliczka
edujed em gmail.com
Seg Maio 30 08:47:43 -03 2011
Complementando...
talvez seja melhor (mais simples e rápido) fazer algo do tipo:
select cc.dt_cadastro, cc.mov, sum(cc.valor) total
from controle_conta cc
where cc.tipo_mov = 'C' and cc.id_empresa = :empresa cc.and
dt_cadastro between :pdataini and :pdatafim
group by cc.dt_cadastro, cc.mov
==========================
Eduardo Jedliczka
Apucarana - Pr
==========================
2011/5/30 Eduardo Jedliczka <edujed em gmail.com>
>
> Sua Lógica está errada...
>
> Você está somando os valores para cada registro da tabela controle_conta.
>
> Refaça o seu for select para algo do tipo:
>
> FOR
>
> select Distinct cc.dt_cadastro
> from
>
> controle_conta cc
>
> WHERE
>
> cc.dt_cadastro between :pdataini and :pdatafim
>
> and cc.id_empresa = :empresa
>
> order by cc.dt_cadastro
>
> INTO :data
>
> DO
>
> BEGIN
>
> select coalesce(sum(cc.valor),0)as margProdTerc from controle_conta cc
> where cc.mov = 'X' and cc.tipo_mov = 'C'
> and cc.dt_cadastro=:data and cc.id_empresa = :empresa
> into :margProdTerc;
>
> select coalesce(sum(cc.valor),0)as prodTerc from controle_conta cc
> where cc.mov = 'T' and cc.tipo_mov = 'C'
> and cc.dt_cadastro=:data and cc.id_empresa = :empresa
> into :prodTerc;
>
> select coalesce(sum(cc.valor),0)as Tarifacao from controle_conta cc
> where cc.mov = 'F' and cc.tipo_mov = 'C' ),
> and cc.dt_cadastro=:data and cc.id_empresa = :empresa
> into :Tarifacao;
>
> select coalesce(sum(cc.valor),0)as cobraDia from controle_conta cc
> where cc.mov = 'I' and cc.tipo_mov = 'C' ),
> and cc.dt_cadastro=:data and cc.id_empresa = :empresa
> into :cobraDia;
>
> select coalesce(sum(cc.valor),0)as cambista from controle_conta cc
> where cc.mov = 'A' and cc.tipo_mov = 'C' )
> and cc.dt_cadastro=:data and cc.id_empresa = :empresa
> into :cambista;
>
>
> SUSPEND;
>
> END
>
>
>
> ==========================
> Eduardo Jedliczka
> Apucarana - Pr
> ==========================
>
>
>
> 2011/5/29 Jose Luiz de Medeiros <joseluiz em digitoneletronica.com.br>
>>
>> Colegas, boa noite.
>>
>>
>>
>> Criei um SP para pegar resultados de uma tabela separando por tipo, ela me
>> traz as linhas de acordo com a data. Mas os valores se repetem, o que fiz de
>> errado?
>>
>>
>>
>> CREATE PROCEDURE SP_REL_CAIXA (
>>
>> pdataini date,
>>
>> pdatafim date,
>>
>> empresa integer)
>>
>> returns (
>>
>> data date,
>>
>> margprodterc numeric(18,2),
>>
>> prodterc numeric(18,2),
>>
>> tarifacao numeric(18,2),
>>
>> cobradia numeric(18,2),
>>
>> cambista numeric(18,2)
>>
>> )
>>
>> as
>>
>> begin
>>
>> FOR
>>
>> select cc.dt_cadastro,
>>
>> (select coalesce(sum(cc.valor),0)as margProdTerc from controle_conta cc
>> where cc.mov = 'X' and cc.tipo_mov = 'C' ),
>>
>> (select coalesce(sum(cc.valor),0)as prodTerc from controle_conta cc
>> where cc.mov = 'T' and cc.tipo_mov = 'C' ),
>>
>> (select coalesce(sum(cc.valor),0)as Tarifacao from controle_conta cc
>> where cc.mov = 'F' and cc.tipo_mov = 'C' ),
>>
>> (select coalesce(sum(cc.valor),0)as cobraDia from controle_conta cc
>> where cc.mov = 'I' and cc.tipo_mov = 'C' ),
>>
>> (select coalesce(sum(cc.valor),0)as cambista from controle_conta cc
>> where cc.mov = 'A' and cc.tipo_mov = 'C' )
>>
>> from
>>
>> controle_conta cc
>>
>> WHERE
>>
>> cc.dt_cadastro between :pdataini and :pdatafim
>>
>> and cc.id_empresa = :empresa
>>
>> group by cc.dt_cadastro
>>
>> INTO :data,
>>
>> :margProdTerc,
>>
>> :prodTerc,
>>
>> :Tarifacao,
>>
>> :cobraDia,
>>
>> :cambista
>>
>> DO
>>
>> BEGIN
>>
>> SUSPEND;
>>
>> END
>>
>>
>>
>> end
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista