[firebase-br] Query "Estranha" não totaliza pelo GROUP BY

Luiz Carlos Rosa luiz em megatroncabos.com.br
Qua Ago 27 13:57:47 -03 2008


Senhores, boa tarde.

Preciso de uma ajuda. Criei a query abaixo, mas qual nao foi minha surpresa
ao saber que ela nao totaliza pelo campo FAMILIA, não sei o q ela faz, mas o
resultado nao condiz com o comando.

Alguem poderia me auxiliar?

Muito Obrigado.

SDS,

Luiz Rosa

SELECT FAMILIA,
SUM(PRCTOTAL) PRCTOTAL,
SUM(VLICMS) VLICMS,
SUM(VLIPI) VLIPI,
SUM(VLFRETE) VLFRETE
FROM (SELECT
    FAMILIA,
    (QTPRODUTO) QTPRODUTO,
    (PRCCOMIPI) PRCTOTAL,
    (VLICMS) VLICMS,
    (VLIPI) VLIPI,
    (CAST(CASE WHEN PESOITENS > 0 THEN VLPRESTACAO*PESOITEM/PESOITENS ELSE 0 
END AS DECIMAL(12,2))) VLFRETE
    FROM(SELECT DISTINCT
        CAST(A.FAMILIA AS INTEGER) FAMILIA,
        A.CODPRODUTO,
        A.NNOTA,
        CAST(A.QUANTIDADE AS INTEGER) QTPRODUTO,
        CAST(A.PRCUNITARIO AS DECIMAL(12,4)) PRCUNITARIO,
        CAST(A.PRCTOTAL AS DECIMAL(12,2)) PRCTOTAL,
        CAST(A.PRCTOTAL+A.VALIPI AS DECIMAL(12,2)) PRCCOMIPI,
        CAST(A.IPI AS DECIMAL(12,2)) PERCIPI,
        CAST(A.VALIPI AS DECIMAL(12,2)) VLIPI,
        CAST(A.ICM AS DECIMAL(12,2)) PERCICMS,
        CAST(A.PRCTOTAL / 100 * A.ICM AS DECIMAL(12,2)) VLICMS,
        CAST(C.TOTALPRODUTOS AS DECIMAL(12,2)) VLTOTALPROD,
        CAST(C.TOTALIPI AS DECIMAL(12,2)) VLTOTALIPI,
        CAST(C.TOTALICM AS DECIMAL(12,2)) VLTOTALICM,
        CAST(COALESCE(C.ICMSUB,0) AS DECIMAL(12,2)) VLTOTALSUBST,
        B.VENDA,
        C.E_S,
        CAST(A.PRCTOTAL/100*A.COMISSAO AS DECIMAL(12,2)) VLCOMISSAO,
        F.PESOLIQUIDO PESOITENS,
        C.NUMPED NUMPEDNOTA,
        CAST(COALESCE(D.VLPRESTACAO,0) AS DECIMAL(12,2)) VLPRESTACAO,
        CAST(A.QUANTIDADE/E.METRAGEM*E.PESOLIQUIDO AS DECIMAL(12,2)) 
PESOITEM
        FROM CADNOTA2 A
        INNER JOIN CADNATOP B ON B.CONTROLE=A.NATOPCONTROLE
        INNER JOIN CADNOTA1 C ON C.CONTROLE=A.CONTROLE
        INNER JOIN CADPRO1 E ON E.CONTROLE=A.CONTROLEPRODUTO
        INNER JOIN (SELECT A.NNOTA, 
SUM(CAST(A.QUANTIDADE/B.METRAGEM*B.PESOLIQUIDO AS DECIMAL(12,2))) 
PESOLIQUIDO
                    FROM CADNOTA2 A INNER JOIN CADPRO1 B ON 
B.CONTROLE=A.CONTROLEPRODUTO
                    WHERE A.DTEMISSAO BETWEEN '07/01/2008' AND '07/31/2008' 
AND A.CANCELADO LIKE 'Não' GROUP BY A.NNOTA) F ON F.NNOTA=A.NNOTA
        LEFT JOIN (SELECT DISTINCT NNOTA,NUMPED,VLPRESTACAO FROM FRETES) D 
ON D.NNOTA=A.NNOTA AND D.NUMPED=A.NUMPED
        WHERE A.DTEMISSAO BETWEEN '07/01/2008' AND '07/31/2008'
        AND A.CANCELADO LIKE 'Não'
        AND B.VENDA LIKE 'S'
        AND C.E_S LIKE 'S'
        ORDER BY A.NNOTA, A.FAMILIA, A.CODPRODUTO) )
GROUP BY FAMILIA





Mais detalhes sobre a lista de discussão lista