[firebase-br] Ajuda com Procedure
Galvao
galvao.rodrigo em gmail.com
Qui Abr 26 09:09:43 -03 2007
Olá pessoal, tenho as tabelas a seguir:
CREATE TABLE TBL_GASTOS_MOTORISTAS (
IDGASTOS DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
MOTORISTA DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
DATA_SAIDA DMN_DATA /* DMN_DATA = DATE */,
DATA_RETORNO DMN_DATA /* DMN_DATA = DATE */,
DIESEL DMN_VALOR /* DMN_VALOR = DECIMAL(18,2) */,
KM_SAIDA DMN_CODIGO /* DMN_CODIGO = INTEGER */,
KM_RETORNO DMN_CODIGO /* DMN_CODIGO = INTEGER */,
IDUSER DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */
);
CREATE TABLE TBL_GASTOS_MOT_ENTRADAS (
IDGASTOSENTRADA DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
IDGASTOS DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
DESCRICAO DMN_NOMES /* DMN_NOMES = VARCHAR(80) */,
VALOR DMN_VALOR /* DMN_VALOR = DECIMAL(18,2) */,
IDUSER DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */
);
CREATE TABLE TBL_GASTOS_MOT_SAIDAS (
IDGASTOSSAIDAS DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
IDGASTOS DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */,
DESCRICAO DMN_NOMES /* DMN_NOMES = VARCHAR(80) */,
VALOR DMN_VALOR /* DMN_VALOR = DECIMAL(18,2) */,
IDUSER DMN_CODIGO NOT NULL /* DMN_CODIGO = INTEGER */
);
Preciso criar uma procedure que me retorne o total das saidas e o total
das entrada, tendo como base o IDGASTOS, da TBL_GASTOS_MOTORISTAS.
to fazendo assim:
begin
for
select sum(gme.valor) as entradas, sum(gms.valor) as saidas
from tbl_gastos_motoristas gm
left join tbl_gastos_mot_entradas gme on (gme.idgastos=gm.idgastos)
left join tbl_gastos_mot_saidas gms on (gms.idgastos=gm.idgastos)
where gm.idgastos=:codigo_receita
into :total_entradas, :total_saidas
do
suspend;
end
mas tá me retornando o somatório errado, tá somando duas vezes ou tres
cada registro, como devo fazer?
Att.
Rodrigo
Mais detalhes sobre a lista de discussão lista