Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel Martins Lobo

Trazer resultado do mês anterior

Recommended Posts

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
DECLARE @DT_INI VARCHAR(10)
DECLARE @DT_FIM VARCHAR(10)

SET @DT_INI = CONVERT(VARCHAR,DATEADD(MM,DATEDIFF(MM,0,GETDATE())-1,0),103)
SET @DT_FIM = CONVERT(VARCHAR,DATEADD(DD,+(DAY(GETDATE()-2)),DATEADD(MM,DATEDIFF(MM,0,GETDATE())-1,0)),103)

SELECT @DT_INI, @DT_FIM

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Buenas,

 

Abaixo alguns exemplos de datas que utilizo.

select CONVERT(VARCHAR(25),DATEADD(yy,-1,DATEADD(mm,-1,DATEADD(dd,-(DAY(GETDATE())-1),GETDATE()))),112) -- Primeiro Dia do Mês Anterior e Ano Anterior 
select CONVERT(VARCHAR(25),DATEADD(yy,-1,DATEADD(mm,-1,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)))),112) -- Ultimo Dia Mês Anterior e Ano Anterior

select CONVERT(VARCHAR(25),DATEADD(mm,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),112) -- Primeiro Dia do Mês Anterior
select CONVERT(VARCHAR(25),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)),112) -- Ultimo Dia Mês Anterior 

select CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GETDATE())-1),GETDATE()),112) -- Primeiro_Dia_do_Mes_Atual
select CONVERT(VARCHAR(25),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)),112) -- Ultimo Dia Mês Atual

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por tanaka_
      Gostaria de saber se é possível listar todos os objetos criados no banco de dados por usuário especifico.
      Não é para listar os "dbo" e sim o usuário logado que criou o objeto.
       
      Usuário logado:
      select SYSTEM_USER
       
      Todos os objetos criados:
      select * from sys.all_objects
    • Por tanaka_
      Gostaria de saber se é possível listar todos os objetos criados no banco de dados por usuário especifico.
      Não é para listar os "dbo" e sim o usuário logado que criou o objeto.
       
      Usuário logado:
      select SYSTEM_USER
       
      Todos os objetos criados:
      select * from sys.all_objects
    • Por janir.matheus
      Boa tarde, peço ajuda dos membros desse fórum pois confesso estar completamente perdido.
      Tomando como base o diagrama (em anexo), preciso de uma query que retorne as empresas, seus produtos e as categorias de cada produto, sendo que cada produto pode pertencer a uma ou mais categorias.
       
      select tbl_produtos.Empresa, tbl_empresas.Nome, tbl_catprod.Categoria, tbl_classproduto.Classe, tbl_produtos.Id, tbl_produtos.Produto from tbl_produtos inner join tbl_empresas on tbl_produtos.Empresa = tbl_empresas.Id left join tbl_catprod on tbl_produtos.Id = tbl_catprod.Categoria left join tbl_classproduto on tbl_catprod.Categoria = tbl_classproduto.Id; Tentei a consulta mostrada acima mas o resultado não foi o que eu esperava.
      Agradeço antecipadamente pela ajuda.

    • Por carlos melo
      Boa noite, trabalho com Delphi e estou tendo dificuldade em fazer conexão com meu servidor que esta na argentina, uso o firedac para fazer a conexão com o banco, so que o comando que estou utilizando esta dando erro e não sei se estou configurando certo a minha query.
       
      Ja criei os linked server e tambem não resolveu......
       
       uso um select dentro do delphi dessa maneira : 
      DELPHI
      FDQuery e dentro uso esse select
      Select * from [192.168.XX.XXX].banco.dbo.tabela direcionando para o meu servidor que esta na argentina sendo 192.168.xx.xxx o ip do servidor de la e o nome do banco é servicos e a tabela ordens.
       
      Se alguem conhece ou ja fez esse tipo de conexão , estou precisando dessa grande ajuda...
       
      obrigado
    • Por FabianoSouza
      Pessoal, por que essa query com COLLATE  não funciona?
      declare @strPesquisa varchar(30) SET @strPesquisa = 'naicle' SET @sql = 'SELECT ' SET @sql = @sql + 'ML.nome ' SET @sql = @sql + 'FROM ' SET @sql = @sql + 'dbo.minhaTab AS ML ' SET @sql = @sql + ' WHERE ' SET @sql = @sql + ' nome LIKE ' SET @sql = @sql + '''%' + @strPesquisa COLLATE Latin1_General_CI_AI + '%''' EXEC (@sql) Não acusa erro ao rodar.
      Mas não traz os registro porque está gravado como "naiclê" (com acento), o que significa que não está aplicando a COLLATE.
       
      Montando essa mesma query mas da forma tradicional, o COLLATE funciona.
       
      SELECT ML.nome FROM dbo.minhaTab AS ML WHERE nome LIKE '%'+ @strPesquisa COLLATE Latin1_General_CI_AI+'%'  
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.