Como pegar de um grupo o sum total, o sum dos pagos e o sum
olá colegas
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?
RECONSTRUINDO PARA MOSTRAR ONDE EU PRECISO DOS IDS DOS GRUPOS
Qualquer ajuda/dica será bem-vinda
Grato
Delmar
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
Curtidas 0
Respostas
Delmar
17/02/2009
Reenviando formatado
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
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
GOSTEI 0
Delmar
17/02/2009
Resolvido
Compartilhando a solução
Código:
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
Compartilhando a solução
Código:
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