Fórum SQL Agrupando por mês na mesma linha de registro. #321052
10/05/2006
0
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
Curtir tópico
+ 0Posts
10/05/2006
Motta
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.
Gostei + 0
10/05/2006
Techsoft
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!
Gostei + 0
10/05/2006
Motta
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.
------------------------------------------
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)