Usuário com melhor resposta
Consulta de período de data em tabelas diferentes

Pergunta
-
Boa tarde, gostaria de uma ajuda de vocês, estou com um problema e não estou conseguindo resolver.
Tenho algumas tabelas no meu trabalho tipo: -> processamento2014, processamento2015, processamento2015 e processamento2017.Preciso fazer uma consulta por período, tipo: 15/05/2016 até 15/09/2017 sendo que buscaria na tabela
processamento2016 -> 15/05/2016 a 31/05/2016
processamento2017 -> 01/01/2017 a 15/09/2017.Obrigado a todos.
Respostas
-
Boa tarde,
Pelo que entendi acredito que seja o caso de utilizar o operador Union All.
Considerando que na tabela de processamento2016 existem apenas dados de 2016 e assim por diante, o filtro poderia ficar igual. Ex:
select * from Processamento2016 where Data between '20160515' and '20170915' union all select * from Processamento2017 where Data between '20160515' and '20170915'
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 11 de janeiro de 2018 21:46
-
Acho que, se for possível, seria melhor montar essa query na aplicação. No SQL Server acredito que uma alternativa seria utilizar uma query dinâmica. Ex:
declare @DataIni date; declare @DataFim date; declare @SQL nvarchar(max); declare @AnoAux integer; declare @AnoIni integer; declare @AnoFim integer; set @DataIni = '20160515'; set @DataFim = '20170915'; set @AnoIni = Year(@DataIni); set @AnoFim = Year(@DataFim); set @AnoAux = @AnoIni; set @SQL = ''; while @AnoAux <= @AnoFim begin if @AnoAux > @AnoIni set @SQL = @SQL + ' union all '; set @SQL = @SQL + 'select * from Processamento' + cast(@AnoAux as nvarchar); set @AnoAux = @AnoAux + 1; end -- print @SQL; execute sp_executesql @SQL
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 11 de janeiro de 2018 21:46
-
Deleted
- Sugerido como Resposta Adrian Hideki quarta-feira, 10 de janeiro de 2018 21:59
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 11 de janeiro de 2018 21:46
Todas as Respostas
-
Boa tarde,
Pelo que entendi acredito que seja o caso de utilizar o operador Union All.
Considerando que na tabela de processamento2016 existem apenas dados de 2016 e assim por diante, o filtro poderia ficar igual. Ex:
select * from Processamento2016 where Data between '20160515' and '20170915' union all select * from Processamento2017 where Data between '20160515' and '20170915'
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 11 de janeiro de 2018 21:46
-
So que o meu problema é que essas datas são digitadas pelo usuário, dependendo da data digitada ele devera busca na tabela correta automaticamente.
Exemplo: 01/08/2013 até 08/07/2014
Devera buscar nas tabelas referente ao ano 2013 e 2014.
Pois se eu juntar todas as tabela em uma só, ficara uma tabela muito grande pela quantidade de dados. -
Acho que, se for possível, seria melhor montar essa query na aplicação. No SQL Server acredito que uma alternativa seria utilizar uma query dinâmica. Ex:
declare @DataIni date; declare @DataFim date; declare @SQL nvarchar(max); declare @AnoAux integer; declare @AnoIni integer; declare @AnoFim integer; set @DataIni = '20160515'; set @DataFim = '20170915'; set @AnoIni = Year(@DataIni); set @AnoFim = Year(@DataFim); set @AnoAux = @AnoIni; set @SQL = ''; while @AnoAux <= @AnoFim begin if @AnoAux > @AnoIni set @SQL = @SQL + ' union all '; set @SQL = @SQL + 'select * from Processamento' + cast(@AnoAux as nvarchar); set @AnoAux = @AnoAux + 1; end -- print @SQL; execute sp_executesql @SQL
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 11 de janeiro de 2018 21:46
-
Deleted
- Sugerido como Resposta Adrian Hideki quarta-feira, 10 de janeiro de 2018 21:59
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 11 de janeiro de 2018 21:46
-