MÊS ATUAL X MÊS ANO ANTERIOR COM O LUCRO
SELECT
CASE
WHEN GV.DATA_EMISSAO BETWEEN
CAST(EXTRACT(YEAR FROM CURRENT_DATE) || '-' ||
EXTRACT(MONTH FROM CURRENT_DATE) || '-01' AS DATE)
AND DATEADD(1 DAY TO DATEADD(-1 DAY TO
DATEADD(1 MONTH TO CAST(EXTRACT(YEAR FROM CURRENT_DATE) || '-' ||
EXTRACT(MONTH FROM CURRENT_DATE) || '-01' AS DATE))))
THEN 'Mês atual'
ELSE 'Mês do ano anterior'
END AS PERIODO,
-- AQUI renomeei de TOTAL_VENDIDO para TOTAL
SUM(VI.VALOR_TOTAL) AS TOTAL,
SUM(VI.QUANTIDADE * P.PRECO_CUSTO) AS TOTAL_CUSTO,
SUM(VI.VALOR_TOTAL) - SUM(VI.QUANTIDADE * P.PRECO_CUSTO) AS LUCRO,
CASE
WHEN SUM(VI.VALOR_TOTAL) = 0 THEN 0
ELSE ((SUM(VI.VALOR_TOTAL) - SUM(VI.QUANTIDADE * P.PRECO_CUSTO)) / SUM(VI.VALOR_TOTAL)) * 100
END AS MARGEM_PERCENTUAL
FROM VENDAS GV
INNER JOIN VENDAS_ITENS VI ON VI.ID_VENDA = GV.ID
INNER JOIN PRODUTOS P ON P.ID = VI.ID_PRODUTO
WHERE
GV.STATUS = 'Venda faturada'
AND (
-- mês atual
GV.DATA_EMISSAO BETWEEN
CAST(EXTRACT(YEAR FROM CURRENT_DATE) || '-' ||
EXTRACT(MONTH FROM CURRENT_DATE) || '-01' AS DATE)
AND DATEADD(1 DAY TO DATEADD(-1 DAY TO
DATEADD(1 MONTH TO CAST(EXTRACT(YEAR FROM CURRENT_DATE) || '-' ||
EXTRACT(MONTH FROM CURRENT_DATE) || '-01' AS DATE))))
OR
-- mesmo mês do ano anterior
GV.DATA_EMISSAO BETWEEN
CAST((EXTRACT(YEAR FROM CURRENT_DATE) - 1) || '-' ||
EXTRACT(MONTH FROM CURRENT_DATE) || '-01' AS DATE)
AND DATEADD(1 DAY TO DATEADD(-1 DAY TO
DATEADD(1 MONTH TO CAST((EXTRACT(YEAR FROM CURRENT_DATE) - 1) || '-' ||
EXTRACT(MONTH FROM CURRENT_DATE) || '-01' AS DATE))))
)
GROUP BY
PERIODO;
Arquivo pronto>>>>> 98.fr3
