Olá pessoal, estou com dificuldades para resolver este problema, já procurei pela net mas não encontrei nada que ajudasse, segue...
tenho esta consulta:
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
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
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....
funcinou que foi uma beleza, mas para o problema acima citado não consegui resover.
alguém tem uma solução legal para resolver esse problema??
Pergunta
reunix
Olá pessoal, estou com dificuldades para resolver este problema, já procurei pela net mas não encontrei nada que ajudasse, segue...
tenho esta consulta:
funcinou que foi uma beleza, mas para o problema acima citado não consegui resover.
alguém tem uma solução legal para resolver esse problema??
agradeço desde já
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.