Boa tarde!
Eu criei essa procedure para calcular o número de notas e o faturamento em um determinado ano para um CPF, mas os valores das quantidades de notas estão divergentes, alguém sabe onde estou errando? -- Query criada
CREATE PROCEDURE Faturamento_por_cliente (@CPF VARCHAR(12), @ANO INT)
AS
BEGIN
SELECT TC.CPF, COUNT(NF.NUMERO) AS QDE_NOTAS, YEAR(NF.DATA) ANO, SUM(INF.QUANTIDADE*INF.PREÇO) AS FATURAMENTO
FROM [TABELA DE CLIENTES]TC INNER JOIN [NOTAS FISCAIS]NF ON TC.CPF = NF.CPF
INNER JOIN [ITENS NOTAS FISCAIS]INF ON INF.NUMERO = NF.NUMERO
WHERE YEAR(NF.DATA) = @ANO AND TC.CPF = @CPF
GROUP BY TC.CPF, YEAR(NF.DATA)
END
EXEC Faturamento_por_cliente @CPF = '19290992743', @ANO = 2017
Output: CPF, QDE_NOTAS, ANO, FATURAMENTO
19290992743, 4653, 2017, 3222999,90375999
-- Query de comparação:
SELECT COUNT(*) FROM [NOTAS FISCAIS] WHERE CPF = '19290992743' AND YEAR([DATA]) = 2017
SELECT SUM(QUANTIDADE * [PREÇO]) FROM [ITENS NOTAS FISCAIS] B INNER JOIN [NOTAS FISCAIS] A ON A.NUMERO = B.NUMERO WHERE CPF = '19290992743' AND YEAR([DATA]) = 2017
Output:
1992 (Quantidade de Notas - Esse é o valor divergente)
3222999,90375999 (Faturamento - Valor ok)