Usuário com melhor resposta
Select Intervalo de Datas, dados historico

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_%'
) XSó está me mostrando dados da data atual.
Obrigada
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
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
----------------------------------------------------------
-
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
-
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
-
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
----------------------------------------------------------
- Editado William John Adam Trindade quarta-feira, 22 de fevereiro de 2017 15:05
-
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
-
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
----------------------------------------------------------
-
-
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
----------------------------------------------------------
-
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
----------------------------------------------------------
- Editado William John Adam Trindade quarta-feira, 22 de fevereiro de 2017 15:48
-
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
- Editado Thaís Sakamoto 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
-
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
----------------------------------------------------------
- Editado William John Adam Trindade quarta-feira, 22 de fevereiro de 2017 16:07
-
-
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?
-
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
----------------------------------------------------------
-
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
----------------------------------------------------------
- Editado William John Adam Trindade quarta-feira, 22 de fevereiro de 2017 17:05
-
Somente a variavel declarada para a tabela temporaria
DECLARE @Hoje DATE
SET @Hoje = DATEADD (day,-1,GETDATE())- Editado Thaís Sakamoto quarta-feira, 22 de fevereiro de 2017 17:15
-
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
-
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
----------------------------------------------------------
- Editado William John Adam Trindade quarta-feira, 22 de fevereiro de 2017 17:25