[firebase-br] Ajuda para um Select Sum

Eduardo Jedliczka edujed em gmail.com
Qua Fev 24 13:26:49 -03 2016


Entendi o seu problema, mas há um erro de lógica nesta questão...

na vida real é pouco provável que você precise de dados "analíticos" e
"sintéticos" numa mesma exibição/relatório.

mas se você realmente quer partir para este caminho... procure por
"windowing functions"...   "sum() over partition by"

https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiOrKnf55DLAhVMGJAKHXPpBB0QFggfMAA&url=http%3A%2F%2Fwww.firebirdsql.org%2Ffile%2Fcommunity%2Fppts%2Ffbcon11%2Ffb3windowing.pdf&usg=AFQjCNF1QECmFxN8dDUHoi0YE6QIazx4RQ&sig2=CzcpccmlfxeE2MaZU_hegw&bvm=bv.114733917,d.Y2I

mas isto irá acarretar outro problema.... (não vou fazer spoiller).

Abraço,




==========================
Eduardo Jedliczka
Curitiba - Pr
==========================

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

> Estou usando o componente RDprint.
>
> Em 24 de fevereiro de 2016 12:50, Carlos Midia <carlosmidia2013 em gmail.com>
> escreveu:
>
> > Boa tarde colegas, mesmo com o select abaixo não estou conseguindo pegar
> a
> > soma dos pedidos:
> >
> > 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
> >
> > esta exibindo apenas o valor do registro
> >
> >
> >
> > Em 24 de fevereiro de 2016 09:38, Alexandre <
> camilo em apollosistemas.com.br>
> > escreveu:
> >
> >> 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
> >>
> >>
> >>
> >> ______________________________________________
> >> 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
>



Mais detalhes sobre a lista de discussão lista