Fórum Como pegar de um grupo o sum total, o sum dos pagos e o sum #368697
26/02/2009
0
Como pegar de um grupo o sum total dos registros do grupo, o sum dos registros pagos e o sum dos registros não pagos, dado que o conjunto do grupo tem ambos registros pagos e não pagos
Eu estava tentando assim, porém não consegui passar o grupo {ano, mes} nas consulta que estou usando no lugar dos campos que fariam respectivamente o sum dos pagos e o sum dos não pagos. Colocando fixo ali o ano e o mes dá certo, porém neste caso, a sql não itera entre os grupo, pq estou passando fixo o id de um grupo
Ou teria outra forma de resolver esse problema?
SELECT EXTRACT (MONTH FROM DATAVENCIMENTO) AS MES, EXTRACT (YEAR FROM DATAVENCIMENTO) AS ANO, SUM(VALOR) AS TOTAL, (SELECT SUM(VALOR) FROM CONTA WHERE TIPO=´C´ AND FORMAPGTO=´C´ AND STATUSPREVISTO=´S´ AND EXTRACT (YEAR FROM DATAVENCIMENTO)=2008 AND EXTRACT (MONTH FROM DATAVENCIMENTO)=1 ) AS PAGOS, (SELECT SUM(VALOR) FROM CONTA WHERE TIPO=´C´ AND FORMAPGTO=´C´ AND STATUSPREVISTO=´N´ AND EXTRACT (YEAR FROM DATAVENCIMENTO) = 2008 AND EXTRACT (MONTH FROM DATAVENCIMENTO) = 1 ) AS NAOPAGOS FROM CONTA C WHERE C.TIPO=´C´ AND C.FORMAPGTO=´C´ AND C.DATAVENCIMENTO BETWEEN ´01/01/2008´ AND ´12/31/2009´ GROUP BY ANO, MES
RECONSTRUINDO PARA MOSTRAR ONDE EU PRECISO DOS IDS DOS GRUPOS
SELECT EXTRACT (MONTH FROM DATAVENCIMENTO) AS MES, EXTRACT (YEAR FROM DATAVENCIMENTO) AS ANO, SUM(VALOR) AS TOTAL, (SELECT SUM(VALOR) FROM CONTA WHERE TIPO=´C´ AND FORMAPGTO=´C´ AND STATUSPREVISTO=´S´ AND EXTRACT (YEAR FROM DATAVENCIMENTO)=AQUI_ID_ANO_DO_GRUPO AND EXTRACT (MONTH FROM DATAVENCIMENTO)=AQUI_ID_MES_DO_GRUPO ) AS PAGOS, (SELECT SUM(VALOR) FROM CONTA WHERE TIPO=´C´ AND FORMAPGTO=´C´ AND STATUSPREVISTO=´N´ AND EXTRACT (YEAR FROM DATAVENCIMENTO) = AQUI_ID_ANO_DO_GRUPO AND EXTRACT (MONTH FROM DATAVENCIMENTO) = AQUI_ID_MES_DO_GRUPO ) AS NAOPAGOS FROM CONTA C WHERE C.TIPO=´C´ AND C.FORMAPGTO=´C´ AND C.DATAVENCIMENTO BETWEEN ´01/01/2008´ AND ´12/31/2009´ GROUP BY ANO, MES
Qualquer ajuda/dica será bem-vinda
Grato
Delmar
Delmar
Curtir tópico
+ 0Posts
03/03/2009
Delmar
Gostei + 0
08/03/2009
Delmar
Gostei + 0
08/03/2009
Delmar
Compartilhando a solução
SELECT EXTRACT (MONTH FROM DATAVENCIMENTO) AS MES, EXTRACT (YEAR FROM DATAVENCIMENTO) AS ANO, SUM(VALOR) AS TOTAL, SUM((CASE WHEN STATUSPREVISTO = ´S´ THEN VALOR ELSE 0 END)) AS RECEBIDOS, SUM((CASE WHEN STATUSPREVISTO = ´N´ THEN VALOR ELSE 0 end)) AS NAORECEBIDOS FROM CONTA C WHERE C.TIPO=´C´ AND C.FORMAPGTO=´C´ AND C.DATAVENCIMENTO BETWEEN ´01/01/2008´ AND ´12/31/2009´ GROUP BY ANO, MES
Pesquisei aqui mesmo por ´case group by´ com todas as palavras e encontrei neste tópico
[url]http://forum.devmedia.com.br/viewtopic.php?t=91662&highlight=case+group[/url]
Feliz domingo pra nós
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)