[firebase-br] Ajuda para um Select Sum

Rafael - FAV Ferro e Aço rafael em favcomercial.com.br
Ter Fev 23 13:46:25 -03 2016


Olá amigo.
Sintaticamente o comando está errado.
Como você tem várias colunas e apenas 1 delas tem função de "agrupamento",
você deve incluir todas as demais no GROUP BY.
No caso, seu select deveria ser assim:

Select p.Id, p.Pedido_Num, p.Cliente, p.Data_Pedido, p.Valor_Total,
sum(p.Valor_Total) as Total_Geral from PEDIDO p
 where p.Data_Pedido between :pDataini and :pDatafim
 and p.Fechado = :pConfirmada
 GROUP BY p.Id, p.Pedido_Num, p.Cliente, p.Data_Pedido, p.Valor_Total
order by p.data_pedido

Agora, logicamente também tem uma falha aí.
Se você quer o total de todos os registros que serão trazidos, você deve
fazer essa soma fora da consulta.
Muitas ferramentas de relatório têm essa função de acumulador.

Você pode fazer também uma consulta paralela para pegar APENAS a somatória:

Select sum(p.Valor_Total) as Total_Geral
from PEDIDO p
 where p.Data_Pedido between :pDataini and :pDatafim
 and p.Fechado = :pConfirmada

Perceba que essa consulta sempre retornará apenas UM registro.
Espero que tenha ajudado.


--
Rafael Cardoso Stella



Em 23 de fevereiro de 2016 12:36, Carlos Midia <carlosmidia2013 em gmail.com>
escreveu:

> Bom dia a todos, tenho um relatório com o seguinte select:
>
> Select p.Id, p.Pedido_Num, p.Cliente, p.Data_Pedido, p.Valor_Total,
> sum(p.Valor_Total) as Total_Geral from PEDIDO p
>  where p.Data_Pedido between :pDataini and :pDatafim
>  and p.Fechado = :pConfirmada
>  GROUP BY p.id order by p.data_pedido
>
> porém preciso do valor total dos pedidos mais esta dando erro devido ao SUM
>
> ex:
>
> 1 002 VENDA AO CONSUMIDOR 23/02/2016 10,00
> 2 003 NOME DO CLIENTE           23/02/2016 10,00
> =======================================
> TOTAL                                                         20,00
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista