Problemas com alias do campo no sum?
Como montar a soma deste select aqui - Uso firebird 1.5
Código:
Vejam o erro de referencia
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
VL_MULTA.
At line 21, column 14.
Código:
select financeiro_contas.data_vencimento, financeiro_contas.boleto_valor, case when financeiro_contas.boleto_multa_percentual = 0 then coalesce(sum(financeiro_contas.boleto_valor * 2 /100),0) else coalesce(sum(financeiro_contas.boleto_valor * financeiro_contas.boleto_multa_percentual /100),0) end as Vl_Multa, financeiro_fixo_boleto.cartorio, financeiro_fixo_boleto.serasa, financeiro_fixo_boleto.contatos, financeiro_fixo_boleto.depos_ident, financeiro_fixo_boleto.baixa, financeiro_fixo_boleto.correios_firmas, financeiro_fixo_boleto.i_contrato, financeiro_fixo_boleto.mes_fim, financeiro_fixo_boleto.multa_contrato, sum(coalesce(vl_multa,0)+ coalesce(financeiro_fixo_boleto.cartorio,0) + coalesce(financeiro_fixo_boleto.serasa,0) + coalesce(financeiro_fixo_boleto.contatos,0) + coalesce(financeiro_fixo_boleto.depos_ident,0) + coalesce(financeiro_fixo_boleto.baixa,0) + coalesce(financeiro_fixo_boleto.correios_firmas,0) + coalesce(financeiro_fixo_boleto.i_contrato,0)+ coalesce(financeiro_fixo_boleto.mes_fim,0) + coalesce(financeiro_fixo_boleto.multa_contrato,0))as Total from financeiro_contas, financeiro_fixo_boleto where financeiro_contas.codigo_cliente = :codigo and financeiro_contas.boleto = 'Sim' and financeiro_contas.cancelado <> 'Sim' group by financeiro_contas.data_vencimento, financeiro_contas.boleto_valor, financeiro_contas.boleto_multa_percentual, financeiro_fixo_boleto.cartorio, financeiro_fixo_boleto.serasa, financeiro_fixo_boleto.contatos, financeiro_fixo_boleto.depos_ident, financeiro_fixo_boleto.baixa, financeiro_fixo_boleto.correios_firmas, financeiro_fixo_boleto.i_contrato, financeiro_fixo_boleto.mes_fim, financeiro_fixo_boleto.multa_contrato
Vejam o erro de referencia
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
VL_MULTA.
At line 21, column 14.
Adriano Dolce
Curtidas 0
Respostas
Rafael Mattos
26/05/2011
VL_MULTA existe na sua tabela?
GOSTEI 0
Adriano Dolce
26/05/2011
Não, é um apelido que dei no case
' CASE WHEN financeiro_contas.boleto_multa_percentual = 0 then '+ ' COALESCE(sum(financeiro_contas.boleto_valor * 2 /100),0) '+ ' ELSE '+ ' COALESCE(sum(financeiro_contas.boleto_valor * financeiro_contas.boleto_multa_percentual /100),0) '+ ' END '+ ' as Vl_Multa,'+
GOSTEI 0
Rafael Mattos
26/05/2011
case when financeiro_contas.boleto_multa_percentual = 0 then
coalesce(sum(financeiro_contas.boleto_valor * 2 /100),0)
else
coalesce(sum(financeiro_contas.boleto_valor * financeiro_contas.boleto_multa_percentual /100),0)
end
as Vl_Multa,
....
sum(coalesce(vl_multa,0)+
----------------------
se esse sum tiver sendo de case ele não aceita isso vc teria que colocar tudo dentro novamente
-----------------------
sum(coalesce(case when financeiro_contas.boleto_multa_percentual = 0 then
coalesce(sum(financeiro_contas.boleto_valor * 2 /100),0)
else
coalesce(sum(financeiro_contas.boleto_valor * financeiro_contas.boleto_multa_percentual /100),0)
end,0)+
GOSTEI 0
Rafael Mattos
26/05/2011
Não, é um apelido que dei no case
' CASE WHEN financeiro_contas.boleto_multa_percentual = 0 then '+ ' COALESCE(sum(financeiro_contas.boleto_valor * 2 /100),0) '+ ' ELSE '+ ' COALESCE(sum(financeiro_contas.boleto_valor * financeiro_contas.boleto_multa_percentual /100),0) '+ ' END '+ ' as Vl_Multa,'+
entendi ele não aceita esse tipo de referencia, pq está no proprio select
GOSTEI 0
Adriano Dolce
26/05/2011
Não, é um apelido que dei no case
' CASE WHEN financeiro_contas.boleto_multa_percentual = 0 then '+ ' COALESCE(sum(financeiro_contas.boleto_valor * 2 /100),0) '+ ' ELSE '+ ' COALESCE(sum(financeiro_contas.boleto_valor * financeiro_contas.boleto_multa_percentual /100),0) '+ ' END '+ ' as Vl_Multa,'+
entendi ele não aceita esse tipo de referencia, pq está no proprio select
Proeciso da soma no final.
GOSTEI 0
Emerson Nascimento
26/05/2011
acho que assim resolve:
select
financeiro_contas.data_vencimento,
financeiro_contas.boleto_valor,
case when financeiro_contas.boleto_multa_percentual = 0
then coalesce(financeiro_contas.boleto_valor,0) * 2 / 100
else coalesce(financeiro_contas.boleto_valor,0) * financeiro_contas.boleto_multa_percentual / 100
end as Vl_Multa,
financeiro_fixo_boleto.cartorio,
financeiro_fixo_boleto.serasa,
financeiro_fixo_boleto.contatos,
financeiro_fixo_boleto.depos_ident,
financeiro_fixo_boleto.baixa,
financeiro_fixo_boleto.correios_firmas,
financeiro_fixo_boleto.i_contrato,
financeiro_fixo_boleto.mes_fim,
financeiro_fixo_boleto.multa_contrato,
sum(
(case when financeiro_contas.boleto_multa_percentual = 0
then coalesce(financeiro_contas.boleto_valor,0) * 2 / 100
else coalesce(financeiro_contas.boleto_valor,0) * financeiro_contas.boleto_multa_percentual / 100
end) +
coalesce(financeiro_fixo_boleto.cartorio,0) +
coalesce(financeiro_fixo_boleto.serasa,0) +
coalesce(financeiro_fixo_boleto.contatos,0) +
coalesce(financeiro_fixo_boleto.depos_ident,0) +
coalesce(financeiro_fixo_boleto.baixa,0) +
coalesce(financeiro_fixo_boleto.correios_firmas,0) +
coalesce(financeiro_fixo_boleto.i_contrato,0)+
coalesce(financeiro_fixo_boleto.mes_fim,0) +
coalesce(financeiro_fixo_boleto.multa_contrato,0)
) as Total
from
financeiro_contas, financeiro_fixo_boleto
where
financeiro_contas.codigo_cliente = :codigo
and financeiro_contas.boleto = 'Sim'
and financeiro_contas.cancelado <> 'Sim'
group by
financeiro_contas.data_vencimento,
financeiro_contas.boleto_valor,
financeiro_contas.boleto_multa_percentual,
financeiro_fixo_boleto.cartorio,
financeiro_fixo_boleto.serasa,
financeiro_fixo_boleto.contatos,
financeiro_fixo_boleto.depos_ident,
financeiro_fixo_boleto.baixa,
financeiro_fixo_boleto.correios_firmas,
financeiro_fixo_boleto.i_contrato,
financeiro_fixo_boleto.mes_fim,
financeiro_fixo_boleto.multa_contrato
mas observei um PEQUENO detalhe: em que momento você está relacionando as tabelas financeiro_contas e financeiro_fixo_boleto ???
select
financeiro_contas.data_vencimento,
financeiro_contas.boleto_valor,
case when financeiro_contas.boleto_multa_percentual = 0
then coalesce(financeiro_contas.boleto_valor,0) * 2 / 100
else coalesce(financeiro_contas.boleto_valor,0) * financeiro_contas.boleto_multa_percentual / 100
end as Vl_Multa,
financeiro_fixo_boleto.cartorio,
financeiro_fixo_boleto.serasa,
financeiro_fixo_boleto.contatos,
financeiro_fixo_boleto.depos_ident,
financeiro_fixo_boleto.baixa,
financeiro_fixo_boleto.correios_firmas,
financeiro_fixo_boleto.i_contrato,
financeiro_fixo_boleto.mes_fim,
financeiro_fixo_boleto.multa_contrato,
sum(
(case when financeiro_contas.boleto_multa_percentual = 0
then coalesce(financeiro_contas.boleto_valor,0) * 2 / 100
else coalesce(financeiro_contas.boleto_valor,0) * financeiro_contas.boleto_multa_percentual / 100
end) +
coalesce(financeiro_fixo_boleto.cartorio,0) +
coalesce(financeiro_fixo_boleto.serasa,0) +
coalesce(financeiro_fixo_boleto.contatos,0) +
coalesce(financeiro_fixo_boleto.depos_ident,0) +
coalesce(financeiro_fixo_boleto.baixa,0) +
coalesce(financeiro_fixo_boleto.correios_firmas,0) +
coalesce(financeiro_fixo_boleto.i_contrato,0)+
coalesce(financeiro_fixo_boleto.mes_fim,0) +
coalesce(financeiro_fixo_boleto.multa_contrato,0)
) as Total
from
financeiro_contas, financeiro_fixo_boleto
where
financeiro_contas.codigo_cliente = :codigo
and financeiro_contas.boleto = 'Sim'
and financeiro_contas.cancelado <> 'Sim'
group by
financeiro_contas.data_vencimento,
financeiro_contas.boleto_valor,
financeiro_contas.boleto_multa_percentual,
financeiro_fixo_boleto.cartorio,
financeiro_fixo_boleto.serasa,
financeiro_fixo_boleto.contatos,
financeiro_fixo_boleto.depos_ident,
financeiro_fixo_boleto.baixa,
financeiro_fixo_boleto.correios_firmas,
financeiro_fixo_boleto.i_contrato,
financeiro_fixo_boleto.mes_fim,
financeiro_fixo_boleto.multa_contrato
mas observei um PEQUENO detalhe: em que momento você está relacionando as tabelas financeiro_contas e financeiro_fixo_boleto ???
GOSTEI 0
Adriano Dolce
26/05/2011
Olá Emerson, tudo bem?
Nao existe relacionamento, pois na tabela financeiro_fixo_boleto possui apenas uma linha, é um valor fixo para todos
Valeu amigo, agora deu certo, muito obrigado a todos que me ajudaram.
Nao existe relacionamento, pois na tabela financeiro_fixo_boleto possui apenas uma linha, é um valor fixo para todos
Valeu amigo, agora deu certo, muito obrigado a todos que me ajudaram.
GOSTEI 0