[firebase-br] Ajuda para um Select Sum

Alexandre camilo em apollosistemas.com.br
Qua Fev 24 09:38:02 -03 2016


Bom dia Carlos
neste caso seria melhor voce utilizar a primeira opção que o Rafael te 
passou

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


Alexandre Camilo



Em 24/02/2016 08:08, Carlos Midia escreveu:
> Bom dia, Rafael desde já agradeço pela ajuda.
> minha situação é a seguinte:
> no relatório que preciso tem alguns filtros sendo o total de 7 no caso deu
> fazer
> um segundo select ex:
>
> Select sum(p.Valor_Total) as Total_Geral
> from PEDIDO p
>   where p.Data_Pedido between :pDataini and :pDatafim
>   and p.Fechado = :pConfirmada
>
> terei que repetir estes 7 parâmetros, só se tivesse como eu pegar o
> resultado do primeiro select .
> tem outra maneira mais apropriada?
> estou usando o delphi e clientdataset.
>
>
> Em 23 de fevereiro de 2016 13:46, Rafael - FAV Ferro e Aço <
> rafael em favcomercial.com.br> escreveu:
>
>> 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
>>>
>> ______________________________________________
>> 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
>>
> ______________________________________________
> 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
>

-- 

Alexandre Camilo
+55 27 3233-4143





Mais detalhes sobre a lista de discussão lista