[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