Como uso SUM na SELECT?

Firebird

26/05/2008

Boa Noite !!

Estou tentado fazer a soma de um campo nesta SELECT mas esta gerando o seguinte erro:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
invalid column reference.

A select é esta abaixo, se eu usar somente
SELECT SUM(VALOR_SOLICITADO) from lancamentos, funciona normal, ja deu pra perceber sou iniciante né..rs.rs..

select sum(lanc.valor_solicitado) as TotalSolicitado,
lanc.valor_solicitado,
lanc.id_lancamento,
Lanc.valor_solicitado,
lanc.valor_parcela,
lanc.plano,
lanc.situacao_proposta,
lanc.data_venda,
lanc.produto_banco,
lanc.nome_da_tabela,
lanc.consignataria,
lanc.comissao_colab,
lanc.resultado_colab,
lanc.id_codprod,
Cli.CPF,
Cli.Nome
from lancamentos Lanc, clientes Cli
where (lanc.id_cliente = cli.id_cliente) and
data_venda between :DATA_VENDA and :DATA_VENDA1 and COLABORADOR = :COLABORADOR
and lanc.situacao_proposta = ´ANDAMENTO´

Se alguem puder ajudar, agradeço.

Abraços.


Badboysjc

Badboysjc

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

26/05/2008

quando você usa funções de agregamento de valores, é necessário agrupar os campos que não estão nas funções.

no seu caso, seria algo como:
select
  sum(lanc.valor_solicitado) as TotalSolicitado,
  lanc.plano,
  lanc.situacao_proposta,
  lanc.produto_banco,
  lanc.nome_da_tabela,
  lanc.consignataria,
  lanc.comissao_colab,
  Cli.CPF,
  Cli.Nome
from
  lancamentos Lanc
inner join
  clientes Cli on (cli.id_cliente = lanc.id_cliente)
where
  data_venda between :DATA_VENDA and :DATA_VENDA1
  and COLABORADOR = :COLABORADOR
  and lanc.situacao_proposta = ´ANDAMENTO´
group by
  lanc.plano,
  lanc.situacao_proposta,
  lanc.produto_banco,
  lanc.nome_da_tabela,
  lanc.consignataria,
  lanc.comissao_colab,
  Cli.CPF,
  Cli.Nome



GOSTEI 0
Badboysjc

Badboysjc

26/05/2008

quando você usa funções de agregamento de valores, é necessário agrupar os campos que não estão nas funções. no seu caso, seria algo como:
select
  sum(lanc.valor_solicitado) as TotalSolicitado,
  lanc.plano,
  lanc.situacao_proposta,
  lanc.produto_banco,
  lanc.nome_da_tabela,
  lanc.consignataria,
  lanc.comissao_colab,
  Cli.CPF,
  Cli.Nome
from
  lancamentos Lanc
inner join
  clientes Cli on (cli.id_cliente = lanc.id_cliente)
where
  data_venda between :DATA_VENDA and :DATA_VENDA1
  and COLABORADOR = :COLABORADOR
  and lanc.situacao_proposta = ´ANDAMENTO´
group by
  lanc.plano,
  lanc.situacao_proposta,
  lanc.produto_banco,
  lanc.nome_da_tabela,
  lanc.consignataria,
  lanc.comissao_colab,
  Cli.CPF,
  Cli.Nome


Caro emerson.en, Bom Dia !!

Obrigado pela atenção, funcionou certinho, mas é o seguinte ele esta somando individualmente por registro. Eu preciso por exemplo se nestas condições que coloquei na SELECT ela encontrar mais de um registro eu preciso que me forneça o total do campo VALOR_SOLICITADO de todos os registros.

Por exemplo:

1 - Domencio - 10.000,00
2 - Emerson - 15.000,00

Total Solicitado: 25.000.00

Se puder dar mais esta força. ficarei muito grato.

Obrigado.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

26/05/2008

tire os campos que não fazem parte do resultado que você esspera:
select
  sum(lanc.valor_solicitado) as TotalSolicitado,
  Cli.CPF,
  Cli.Nome
from
  lancamentos Lanc
inner join
  clientes Cli on (cli.id_cliente = lanc.id_cliente)
where
  data_venda between :DATA_VENDA and :DATA_VENDA1
  and COLABORADOR = :COLABORADOR
  and lanc.situacao_proposta = ´ANDAMENTO´
group by
  Cli.CPF,
  Cli.Nome



GOSTEI 0
POSTAR