none
Trazer resultado do mês anterior RRS feed

  • Pergunta

  • 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                    = 1

    sexta-feira, 12 de maio de 2017 17:35

Respostas

Todas as Respostas