Trazer resultado do mês anterior
Olá a todos, fiz uma query que posteriormente precisarei colocar em um job, portanto preciso que a @DATA_I e @DATA_F gere de forma automática. O que eu preciso é pegar o primeiro dia do mês anterior e o dia atual -1 só que do mês anterior. Exemplo: Hoje é 12/05, então precisaria pegar de 01/04/2017 a 11/04/2017.
O primeiro dia do mês anterior eu já sei como fazer, vou usar (SELECT CONVERT(VARCHAR, DateAdd(mm, DateDiff(mm,0,GetDate()) - 1, 0),103)). O problema é pegar o mesmo dia atual -1 só que do mês anterior.
Abaixo está a minha query:
DECLARE @DATA_I DATE = '01-04-2017'
DECLARE @DATA_F DATE = '11-04-2017'
SELECT SUM ( A.VENDA_BRUTA ) AS VENDA_BRUTA ,
SUM ( A.DESCONTO ) AS DESCONTO ,
SUM ( A.VENDA_LIQUIDA ) AS VENDA_LIQUIDA ,
SUM ( A.IMPOSTOS ) AS IMPOSTOS ,
SUM ( A.QUANTIDADE * ISNULL ( B.CUSTO_CONTABIL , 0 ) ) AS CMV ,
SUM ( CASE WHEN A.TIPO_BONIFICACAO = 'V'
THEN A.QUANTIDADE * A.BONIFICACAO
ELSE A.VENDA_LIQUIDA * ( A.BONIFICACAO / 100 ) END ) AS BONIFICACAO ,
SUM ( CASE WHEN A.TIPO_COMISSAO = 'V'
THEN A.QUANTIDADE * A.COMISSAO
ELSE A.VENDA_LIQUIDA * ( A.COMISSAO / 100 ) END ) AS COMISSAO ,
SUM ( A.VENDA_LIQUIDA ) -
SUM ( A.IMPOSTOS ) -
SUM ( A.QUANTIDADE * ISNULL ( B.CUSTO_CONTABIL , 0 ) ) AS LUCRO_BRUTO
FROM VENDAS_ANALITICAS A WITH(NOLOCK)
JOIN EMPRESAS_USUARIAS X WITH(NOLOCK) ON X.EMPRESA_USUARIA = A.EMPRESA
LEFT JOIN CUSTO_MEDIO_MENSAL_EMPRESA_CONTABIL B WITH(NOLOCK) ON B.PRODUTO = A.PRODUTO
AND B.EMPRESA_CONTABIL = X.EMPRESA_CONTABIL
AND B.MES = MONTH ( A.MOVIMENTO )
AND B.ANO = YEAR ( A.MOVIMENTO )
WHERE A.MOVIMENTO >= @DATA_I AND
A.MOVIMENTO <= @DATA_F AND
X.REDE = 1Discussão (3)
Carregando comentários...