none
Select Intervalo de Datas, dados historico RRS feed

  • Pergunta

  • Bom dia,

    Estou tentando trazer uma consulta que mostre dados de um intervalo de datas, por exemplo, dados da data de ontem e hoje, na mesma consulta.

    Segue script:

    SELECT @DataInicio = MIN(dtt_data_captura),
           @DataFim    = MAX(dtt_data_captura)
      FROM (
      SELECT MAX([dtt_data_captura]) AS dtt_data_captura
        FROM [tb_arquivo_processado]
    WHERE  [fk_int_status] in ('2', '4')
         AND [vch_nome_arquivo] like 'Abhi_RT_Ext.1_%'
    ) X

    Só está me mostrando dados da data atual.

    Obrigada

    quarta-feira, 22 de fevereiro de 2017 14:25

Respostas

  • Meus caros,

    Consegui solucionar o problema finalmente

    Eu agradeço muito a ajuda de todos

    Criei um insert para cada

    INSERT INTO @CriterioArquivo VALUES 
    (1, 'Abhi_RT_JJ_14_%',               'RT', 5, @Ontem,       GETDATE()),

    (1, 'Abhi_RT_JJ_14_%',               'RT', 5, @Hoje,       GETDATE())

    Obrigada

    • Marcado como Resposta Thaís Sakamoto quarta-feira, 22 de fevereiro de 2017 17:20
    quarta-feira, 22 de fevereiro de 2017 17:20

Todas as Respostas

  • Se voce executar essa query:

    SELECT MIN(dtt_data_captura) as DataInicio,
           MAX(dtt_data_captura) as DataFim
      FROM (
      SELECT MAX([dtt_data_captura]) AS dtt_data_captura
        FROM [tb_arquivo_processado]
    WHERE  [fk_int_status] in ('2', '4')
         AND [vch_nome_arquivo] like 'Abhi_RT_Ext.1_%'
    ) X

    qual é o resultado? pode postar?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quarta-feira, 22 de fevereiro de 2017 14:30
  • Bom dia,

    Thaís, nessa query que você postou o trecho que está depois do From será executado primeiro, e esse trecho retorna apenas a maior data.

    Experimente dessa forma para ver se é obtido o resultado esperado:

    SELECT @DataInicio = MIN(dtt_data_captura),
           @DataFim    = MAX(dtt_data_captura)
      FROM  [tb_arquivo_processado]
    WHERE  [fk_int_status] in ('2', '4')
         AND [vch_nome_arquivo] like 'Abhi_RT_Ext.1_%'
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 22 de fevereiro de 2017 14:37
  • Acho que está faltando adicionar um filtro:

    DECLARE @Hoje       DATE;
    DECLARE @Ontem      DATE;
    
    SET @Hoje = GETDATE();
    SET @Ontem = DATEADD(day,-1,GETDATE());
    
    SELECT @DataInicio = MIN(dtt_data_captura),
           @DataFim    = MAX(dtt_data_captura)
      FROM  [tb_arquivo_processado]
    WHERE  [fk_int_status] in ('2', '4')
         AND [vch_nome_arquivo] like 'Abhi_RT_Ext.1_%'
         AND dtt_data_captura between @Ontem and @Hoje

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 22 de fevereiro de 2017 14:52
  • Caso voce queira pegar a maior e a menor data para o filtro :

         [fk_int_status] in ('2', '4')
         AND [vch_nome_arquivo] like 'Abhi_RT_Ext.1_%'

    sugiro fazer isso:

    SELECT MIN(dtt_data_captura_min) as DataInicio,
           MAX(dtt_data_captura_max) as DataFim
      FROM (
      SELECT MIN([dtt_data_captura]) AS dtt_data_captura_min, MAX([dtt_data_captura]) AS dtt_data_captura_max
        FROM [tb_arquivo_processado]
    WHERE  [fk_int_status] in ('2', '4')
         AND [vch_nome_arquivo] like 'Abhi_RT_Ext.1_%'
    ) X

    com isso voce vai pegar a mais antiga entre as mais antigas e a mais recente entre as mais recentes.

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quarta-feira, 22 de fevereiro de 2017 15:04
  • Para verificar as datas obtidas experimente dessa forma:

    DECLARE @Hoje       DATE;
    DECLARE @Ontem      DATE;
    
    SET @Hoje = GETDATE();
    SET @Ontem = DATEADD(day,-1,GETDATE());
    
    SELECT @DataInicio = MIN(dtt_data_captura),
           @DataFim    = MAX(dtt_data_captura)
      FROM  [tb_arquivo_processado]
    WHERE  [fk_int_status] in ('2', '4')
         AND [vch_nome_arquivo] like 'Abhi_RT_Ext.1_%'
         AND dtt_data_captura between @Ontem and @Hoje
    
    SELECT @DataInicio, @DataFim

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 22 de fevereiro de 2017 15:16
  • Mas onde esta a segunda parte da query. A que gera a data_inicio e a data_fim me parece correta:

    Voce obteve 2016-09-29 e 2017-02-22. 

    A coluna que mostra null vem de onde?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quarta-feira, 22 de fevereiro de 2017 15:27
  • Está mostrando dados somente do dia anterior.

    É possível colocar um UNION, para que a consulta gere dados da data atual e em seguida da data anterior? Mas na mesma consulta?

    quarta-feira, 22 de fevereiro de 2017 15:27
  • Neste caso faça assim:

    SELECT @DataInicio=MIN(dtt_data_captura_min) ,
           @DataFim=MAX(dtt_data_captura_max) 
      FROM (
      SELECT MIN([dtt_data_captura]) AS dtt_data_captura_min, MAX([dtt_data_captura]) AS dtt_data_captura_max
        FROM [tb_arquivo_processado]
    WHERE  [fk_int_status] in ('2', '4')
         AND [vch_nome_arquivo] like 'Abhi_RT_Ext.1_%'
    ) X


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quarta-feira, 22 de fevereiro de 2017 15:39
  • Mas neste caso voce nao pode usar uma query para pegar a menor data. Se voce quer fazer somente aparecer a data de ontem entao faça isso:

    select AD.[vch_od], MK.NDMarket, MK.TypeMercado, MK.NDOrigin as Praça, TR.Analyst, AD.[dtt_data]

    GETDATE() as Hoje, DATEADD(day,-1, GETDATE()) as Ontem, AD.TIMERANGE,

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quarta-feira, 22 de fevereiro de 2017 15:47
  • Sim,

    Mas o que preciso é que a consulta traga os dados da data de ontem exemplo:

    Ontem rodou os arquivos

    DataInicio          DataFim 

    21/02/2017       21/02/2017

    Trago os dados na consulta

    E abaixo em seguida na mesma consulta, os dados da data atual.

    DataInicio        DataFim

    22/02/2017     22/02/2017

    Ficando assim? 

    DataInicio        DataFim

    21/02/2017     22/02/2017

    22/02/2017     22/02/2017

    Dai na Consulta tem que aparecer assim:

    EXEMPLO:

    EXEMPLO 2

    Obrigada


    quarta-feira, 22 de fevereiro de 2017 15:57
  • Tenta o between

    SELECT "nome_coluna"
    FROM "nome_tabela"
    WHERE "nome_coluna" BETWEEN ''valor1' AND ''valor2';
    
    

    segue os sites p/ estudo:

    https://msdn.microsoft.com/pt-br/library/ms187922.aspx

    http://www.1keydata.com/pt/sql/sql-between.php

    • Sugerido como Resposta Gabriel G.Sales quarta-feira, 22 de fevereiro de 2017 16:06
    quarta-feira, 22 de fevereiro de 2017 16:05
  • Eu nao consigo ver nenhuma diferença (fora as cores) entre os dados do exemplo 1 e exemplo 2. Poderia nos explicar melhor?

    Se eu entendi o registro CNFBSB/Alyne (primeira linha) foi importado ontem (21/fev/2017) e o registro RECJDO/Mara (quarta linha) foi importado hoje (22/fev/2017).

    Voce armazena a data de importaçao em algum campo?

    Caso voce nao esteja armazenando isso eu nao sei se o que voce quer fazer é possivel.

    At


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    quarta-feira, 22 de fevereiro de 2017 16:06
  • Já tentei e não aparecem os dados. 
    quarta-feira, 22 de fevereiro de 2017 16:06
  • Will,

    Só estava demonstrando a ideia nos dois exemplos, 

    o registro CNFBSB/Alyne (primeira linha) foi importado ontem (21/fev/2017) e o registro RECJDO/Mara (quarta linha) foi importado hoje (22/fev/2017). OK

    Agora na consulta preciso puxar todos esses registros, tanto o que foi importado ontem como hoje.

    Mas na minha query só apresentam dados dos registros importados hoje. Como faço para aparecer os registros desde ontem ou sei lá desde semana passada?

    quarta-feira, 22 de fevereiro de 2017 16:12
  • Sim eu entendi.. mas para isso voce precisa de um campo onde voce armazena a data de importaçao. Esse campo existe? Se nao, nao há como fazer.

    Creio que o campo  AD.[dtt_data] nao seja a data de importaçao. Certo?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quarta-feira, 22 de fevereiro de 2017 16:23
  • Nao..  voce nao me entendeu. Creio que seja impossivel que o campo  dtt_data seja a data de importaçao.

    Nos dados que voce mostrou ela possui conteudo futuro:

    dtt_data possui datas futuras: 2017-03-24. Nao me parece que isso seja a data de importaçao.

    Existe um campo outro campo de data ligado a importaçao?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    quarta-feira, 22 de fevereiro de 2017 17:04
  • Somente a variavel declarada para a tabela temporaria

    DECLARE @Hoje       DATE

    SET @Hoje = DATEADD (day,-1,GETDATE())


    quarta-feira, 22 de fevereiro de 2017 17:10
  • Meus caros,

    Consegui solucionar o problema finalmente

    Eu agradeço muito a ajuda de todos

    Criei um insert para cada

    INSERT INTO @CriterioArquivo VALUES 
    (1, 'Abhi_RT_JJ_14_%',               'RT', 5, @Ontem,       GETDATE()),

    (1, 'Abhi_RT_JJ_14_%',               'RT', 5, @Hoje,       GETDATE())

    Obrigada

    • Marcado como Resposta Thaís Sakamoto quarta-feira, 22 de fevereiro de 2017 17:20
    quarta-feira, 22 de fevereiro de 2017 17:20
  • Eu creio que seja impossivel fazer o que voce quer fazer se a tabela tb_arquivo_processado nao possui uma data de importaçao.

    Usando seu exemplo:

    Qual seria a fonte da coluna Data? Como é que voce sabe que a primeira linha foi importada 21/fev e a quarta linha foi importada 22/fev?

    Voce precisa responder essa questao antes de construir a query.

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    quarta-feira, 22 de fevereiro de 2017 17:24