Como pegar de um grupo o sum total, o sum dos pagos e o sum

Delphi

26/02/2009

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

Curtidas 0

Respostas

Delmar

Delmar

26/02/2009

subir


GOSTEI 0
Delmar

Delmar

26/02/2009

subir


GOSTEI 0
Delmar

Delmar

26/02/2009

Resolvido


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
POSTAR