CREATE NONCLUSTERED INDEX IX_NOTAS_FISCAIS_DATA
ON [NOTAS FISCAIS] ([DATA]);
CREATE OR ALTER PROCEDURE dbo.RetornaDepartamentoFaturamento
@DATA_INICIAL DATE = NULL,
@DATA_FINAL DATE = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @FATURAMENTO_SETOR TABLE (DEPARTAMENTO VARCHAR(20), FATURAMENTO FLOAT);
IF @DATA_INICIAL IS NULL
BEGIN
SELECT @DATA_INICIAL = MIN([DATA])
FROM [NOTAS FISCAIS];
END;
IF @DATA_FINAL IS NULL
BEGIN
SELECT @DATA_FINAL = MAX([DATA])
FROM [NOTAS FISCAIS];
END;
INSERT INTO @FATURAMENTO_SETOR(DEPARTAMENTO, FATURAMENTO)
SELECT
DEP.DEPARTAMENTO,
SUM(INF.[PREÇO] * INF.QUANTIDADE) AS FATURAMENTO
FROM [TABELA DE PRODUTOS] TB
JOIN [ITENS NOTAS FISCAIS] INF
ON TB.[CODIGO DO PRODUTO] = INF.[CODIGO DO PRODUTO]
JOIN [NOTAS FISCAIS] NF
ON INF.NUMERO = NF.NUMERO
JOIN (
SELECT DISTINCT
SABOR,
CASE
WHEN SABOR IN (
'Açai','Cereja','Cereja/Maça',
'Maça','Manga','Maracujá','Melância'
) THEN 'FRUTAS NÃO CÍTRICAS'
WHEN SABOR IN (
'Laranja','Lima/Limão','Morango',
'Morango/Limão','Uva'
) THEN 'FRUTAS CÍTRICAS'
ELSE 'SETOR NÃO DEFINIDO'
END AS DEPARTAMENTO
FROM [TABELA DE PRODUTOS]
) DEP
ON DEP.SABOR = TB.SABOR
WHERE NF.DATA >= @DATA_INICIAL
AND NF.DATA < DATEADD(DAY, 1, @DATA_FINAL)
GROUP BY DEP.DEPARTAMENTO;
SELECT * FROM @FATURAMENTO_SETOR
END;
EXEC RetornaDepartamentoFaturamento '2015-08-01', '2015-08-31'