Fiz de uma forma diferente,
CREATE PROCEDURE RelatorioVendaDepartamento
@DATA_INICIAL DATE = '2015-01-01',
@DATA_FINAL DATE = '2015-12-01',
@FATURAMENTO_TOTAL FLOAT OUTPUT
AS
BEGIN
-- Criei uma variável que recebe uma tabela temporária com os departamentos;
DECLARE @DEPARTAMENTO TABLE (SABOR VARCHAR (20), DEPARTAMENTO VARCHAR (20))
INSERT INTO @DEPARTAMENTO (SABOR, DEPARTAMENTO)
SELECT SABOR,
CASE
WHEN SABOR IN ('Laranja', 'Lima/Limão', 'Morango', 'Morango/Limão', 'Uva') THEN 'FRUTAS CÍTRICAS'
ELSE 'NÃO CÍTRICAS'
END AS DEPARTAMENTO
FROM [TABELA DE PRODUTOS]
SELECT @FATURAMENTO_TOTAL = SUM(INF.[PREÇO] * INF.[QUANTIDADE])
FROM [NOTAS FISCAIS] NF
INNER JOIN [ITENS NOTAS FISCAIS] INF
ON NF.NUMERO = INF.NUMERO
INNER JOIN [TABELA DE PRODUTOS] TP
ON INF.[CODIGO DO PRODUTO] = TP.[CODIGO DO PRODUTO]
INNER JOIN @DEPARTAMENTO DP
ON DP.SABOR = TP.SABOR
WHERE NF.[DATA] BETWEEN @DATA_INICIAL AND @DATA_FINAL
SELECT @FATURAMENTO_TOTAL AS TotalFaturamento
SELECT DP.DEPARTAMENTO, DP.SABOR, SUM(INF.[PREÇO] * INF.[QUANTIDADE]) AS FATURAMENTO
FROM [NOTAS FISCAIS] NF
INNER JOIN [ITENS NOTAS FISCAIS] INF
ON NF.NUMERO = INF.NUMERO
INNER JOIN [TABELA DE PRODUTOS] TP
ON INF.[CODIGO DO PRODUTO] = TP.[CODIGO DO PRODUTO]
INNER JOIN @DEPARTAMENTO DP
ON DP.SABOR = TP.SABOR
WHERE NF.[DATA] BETWEEN @DATA_INICIAL AND @DATA_FINAL
GROUP BY DP.DEPARTAMENTO, DP.SABOR
ORDER BY DEPARTAMENTO
END
DECLARE @FATURAMENTO_TOTAL FLOAT
EXEC RelatorioVendaDepartamento
@DATA_INICIAL = '2015-01-01',
@DATA_FINAL = '2015-12-31',
@FATURAMENTO_TOTAL = @FATURAMENTO_TOTAL OUTPUT
SELECT @FATURAMENTO_TOTAL AS TotalFaturamento