Fórum Consulta Agrupando Dia do intervalo da consulta!! #384291
22/08/2010
0
Olá pessoal, estou com dificuldades para resolver este problema, já procurei pela net mas não encontrei nada que ajudasse, segue...
tenho esta consulta:
que retornar:
categoria valor data
--------------------------------------------------
ATENDIMENTOS 0,33 30/08/2010
ATENDIMENTOS 84,33 31/08/2010
ATENDIMENTOS 33,33 04/09/2010
gostaria de agrupar por categoria + dia e mes no mesmo registro: vou dá um exemplo com o resultado da consulta acima: seria: categoria dia30AGO dia31AGO dia04SET ------------------------------------------------------------------------- ATENDIMENTOS 0,33 84,33 33,33 invés de retornar 3 registros 1 para cada DATA, seria 1 registro acumulando cada dia ou data. deu pra entender né?? já fiz uma pesquisa parecida com os meses do ano, que foi facil porque os meses são fixo daí fiz com o EXTRACT YAR e MONTH, segue um pedaço do código para os meses do ano
funcinou que foi uma beleza, mas para o problema acima citado não consegui resover.
alguem tem uma solução legal para resolver esse problema??
agradeço desde já
SELECT b.nome,SUM(valor) AS valor,to_char(a.vencto,'dd/mm/yyyy') FROM ctreceber a left join categfinanc b on a.categoria = b.id WHERE (cast(a.vencto as date) >= '28/08/2010' AND cast(a.vencto as date) <= '11/09/2010') AND (a.dtrec is null) GROUP BY a.vencto,b.nome order by a.vencto,b.nome
ATENDIMENTOS 84,33 31/08/2010
ATENDIMENTOS 33,33 04/09/2010
gostaria de agrupar por categoria + dia e mes no mesmo registro: vou dá um exemplo com o resultado da consulta acima: seria: categoria dia30AGO dia31AGO dia04SET ------------------------------------------------------------------------- ATENDIMENTOS 0,33 84,33 33,33 invés de retornar 3 registros 1 para cada DATA, seria 1 registro acumulando cada dia ou data. deu pra entender né?? já fiz uma pesquisa parecida com os meses do ano, que foi facil porque os meses são fixo daí fiz com o EXTRACT YAR e MONTH, segue um pedaço do código para os meses do ano
categfinanc.Sql.Add('Select');
categfinanc.Sql.Add('A.id,');
categfinanc.Sql.Add('A.nome,');
categfinanc.Sql.Add('TabPagoJan.PagoJan ,');
categfinanc.Sql.Add('TabPagoFev.PagoFev ,');
categfinanc.Sql.Add('TabPagoMar.PagoMar ,');
categfinanc.Sql.Add('TabPagoAbr.PagoAbr ,');
categfinanc.Sql.Add('TabPagoMai.PagoMai ,');
categfinanc.Sql.Add('TabPagoJun.PagoJun ,');
categfinanc.Sql.Add('TabPagoJul.Pagojul ,');
categfinanc.Sql.Add('TabPagoAgo.PagoAgo ,');
categfinanc.Sql.Add('TabPagoSet.PagoSet ,');
categfinanc.Sql.Add('TabPagoOut.Pagoout ,');
categfinanc.Sql.Add('TabPagoNov.Pagonov ,');
categfinanc.Sql.Add('TabPagoDez.PagoDez ,');
categfinanc.Sql.Add('TabRecJan.RecJan ,');
categfinanc.Sql.Add('TabRecFev.RecFev ,');
categfinanc.Sql.Add('TabRecMar.RecMar ,');
categfinanc.Sql.Add('TabRecAbr.RecAbr ,');
categfinanc.Sql.Add('TabRecMai.RecMai ,');
categfinanc.Sql.Add('TabRecJun.Recjun ,');
categfinanc.Sql.Add('TabRecJul.Recjul ,');
categfinanc.Sql.Add('TabRecAgo.RecAgo ,');
categfinanc.Sql.Add('TabRecSet.Recset ,');
categfinanc.Sql.Add('TabRecOut.Recout ,');
categfinanc.Sql.Add('TabRecNov.Recnov ,');
categfinanc.Sql.Add('TabRecDez.RecDez ');
categfinanc.Sql.Add('FROM categfinanc a');
// pagos Janeiro
categfinanc.sql.add('LEFT JOIN (SELECT Round(CAST(SUM(valorpago) AS NUMERIC),2) AS PagoJan ,categoria FROM contasPagar');
categfinanc.sql.add('WHERE (CATEGORIA = :pCateg OR :pCateg = 0) ');
categfinanc.sql.add('AND (COALESCE(valorpago,0) <> 0)');
categfinanc.sql.add('AND (Extract(YEAR FROM datapagto) = :pAnoPg) ');
categfinanc.sql.add('AND (Extract(MONTH FROM datapagto) = :pPgJan) ');
categfinanc.sql.add('GROUP BY categoria) TabPagoJan ON A.id = TabPagoJan.categoria');
// pagos Fevereiro
categfinanc.sql.add('LEFT JOIN (SELECT Round(CAST(SUM(valorpago) AS NUMERIC),2) AS PagoFev ,categoria FROM contasPagar');
categfinanc.sql.add('WHERE (CATEGORIA = :pCateg OR :pCateg = 0) ');
categfinanc.sql.add('AND (COALESCE(valorpago,0) <> 0) ');
categfinanc.sql.add('AND (Extract(YEAR from datapagto) = :pAnoPg) ');
categfinanc.sql.add('AND (Extract(Month from datapagto) = :pPgFev) ');
categfinanc.sql.add('GROUP BY categoria) TabPagoFev ON A.id = TabPagoFev.categoria');
// pagos Março
categfinanc.sql.add('LEFT JOIN (SELECT Round(CAST(SUM(valorpago) AS NUMERIC),2) AS PagoMar ,categoria FROM contasPagar');
categfinanc.sql.add('WHERE (CATEGORIA = :pCateg OR :pCateg = 0) ');
categfinanc.sql.add('AND (COALESCE(valorpago,0) <> 0) ');
categfinanc.sql.add('AND (Extract(YEAR from datapagto) = :pAnoPg) ');
categfinanc.sql.add('AND (Extract(Month from datapagto) = :pPgMar) ');
categfinanc.sql.add('GROUP BY categoria) TabPagoMar ON A.id = TabPagoMar.categoria');
... SEGUE PARA TODOS OS MESES....
Renato Muniz
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)