PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Como pegar de um grupo o sum total, o sum dos pagos e o sum #60481

17/02/2009

0

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?

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

Delmar

Responder

Posts

17/02/2009

Delmar

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



Responder

Gostei + 0

08/03/2009

Delmar

Resolvido


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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar