Fórum SQL Agrupando por mês na mesma linha de registro. #321052

10/05/2006

0

Pessoal,

Estou precisando gerar uns dados para exportar para o excel, estes dados serão dinâmicos, preciso informar:

CCUSTO JAN FEV MAR ABR MAI... XXX

Se não estiver bem claro preciso do seguinte, gerar um relatório por centro de custo e ao lado gerar o valor acumulado de cada mês.

Fiz o seguinte SQL:

SELECT ESPITNF.CCUSTO, 
(SELECT Sum(ESPITNF.VLTOTAL) AS SomaDeVLTOTAL
FROM ESPITNF LEFT JOIN ESPNF ON (ESPITNF.LOCDEST = ESPNF.LOCDEST) AND (ESPITNF.NUMNF = ESPNF.NUMNF)
WHERE ESPNF.DATAREC >= :DATAI1 AND ESPNF.DATAREC <= :DATAF1 AND CCUSTO = CCUSTO) AS TJAN,
(SELECT Sum(ESPITNF.VLTOTAL) AS SomaDeVLTOTAL
FROM ESPITNF LEFT JOIN ESPNF ON (ESPITNF.LOCDEST = ESPNF.LOCDEST) AND (ESPITNF.NUMNF = ESPNF.NUMNF)
WHERE ESPNF.DATAREC >= :DATAI2 AND ESPNF.DATAREC <= :DATAF2 AND CCUSTO = CCUSTO) AS TFEV
FROM ESPITNF LEFT JOIN ESPNF ON (ESPITNF.NUMNF = ESPNF.NUMNF) AND (ESPITNF.LOCDEST = ESPNF.LOCDEST)
GROUP BY ESPITNF.CCUSTO;

Sendo que os sub select serão montados conforme a necessidade de meses que estiver no período solicitado, meu problema é trazer o somatório apenas do centro de custo da linha em questão onde aparece ´CCUSTO = CCUSTO´ precisaria que neste momento fosse considerado apenas o CCUSTO da linha.

Vlw pessol!


Techsoft

Techsoft

Responder

Posts

10/05/2006

Motta

TENTE ASSIM :

SELECT SUM(CASE WHEN EXTRACT(MONTH FROM SYSDATE) = 1 THEN VALOR
ELSE 0 END) JAN ,
SUM(CASE WHEN EXTRACT(MONTH FROM SYSDATE) = 2 THEN VALOR
ELSE 0 END) FEV,
SUM(CASE WHEN EXTRACT(MONTH FROM SYSDATE) = 3 THEN VALOR
ELSE 0 END) MAR,
...
SUM(VALOR) TOTAL
FROM TABELA
WHERE .......


O BD VAI TER DE SUPORTAR ESTA SINTAXE.


Responder

Gostei + 0

10/05/2006

Techsoft

Motta,

Meu problema não está exatamente ai, mas sim no fato de ter q agrupar em cada linha o CCUSTO

CCUSTO     JAN    FEV     MAR
4.01.0000   10000 23000 45003
4.01.0001   1230  12345  12345
4.01.0002   1234  45006  60023


Não sei se ficou claro, mas a dificuldade que estou tendo é no trazer dentro do mês a somatória somente do centro de custo da linha, com o SQL que mostrei acima consigo trazer os valores somados do mês, porém de TODOS os CCUSTO e não apenas do registro entende.

Obrigado!


Responder

Gostei + 0

10/05/2006

Motta

ainda assim :

SELECT CCUSTO,SUM(CASE WHEN EXTRACT(MONTH FROM SYSDATE) = 1 THEN VALOR
ELSE 0 END) JAN ,
SUM(CASE WHEN EXTRACT(MONTH FROM SYSDATE) = 2 THEN VALOR
ELSE 0 END) FEV,
SUM(CASE WHEN EXTRACT(MONTH FROM SYSDATE) = 3 THEN VALOR
ELSE 0 END) MAR,
...
SUM(VALOR) TOTAL
FROM TABELA
WHERE .......
GROUP BY CCUSTO

-----------------

JÁ FIZ ALGO PARECIDO E FUNCIONOU.

------------------------------------------


Responder

Gostei + 0

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

Aceitar