Tenho duas tabelas que armazenam dados semelhantes, mas para períodos de tempo diferentes:
MainTable: contém registros do ano atual.
ArchiveTable: contém registros de anos anteriores.
Ambas as tabelas têm uma coluna chamada DateColumn (do tipo DATETIME). Preciso escrever uma consulta T-SQL (ou conjunto de consultas) que se comporte da seguinte forma com base em dois parâmetros de entrada, @StartDate e @EndDate:
Somente ano atual: se ambas as datas estiverem dentro do ano atual, busque dados somente da MainTable.
Somente anos anteriores: se ambas as datas forem anteriores ao ano atual, busque dados somente do ArchiveTable.
Intervalo misto: se o intervalo de datas abranger anos anteriores e o ano atual, busque dados de ambas as tabelas.
Por exemplo, se o ano atual for 2025:
@StartDate = '2025-03-01' e @EndDate = '2025-03-31' devem retornar apenas linhas da MainTable.
@StartDate = '2024-11-01' e @EndDate = '2024-12-31' devem retornar apenas linhas de ArchiveTable.
@StartDate = '2024-12-15' e @EndDate = '2025-01-15' devem retornar linhas de ambas as tabelas (divididas no limite).
Pensei em usar a lógica IF…ELSE para decidir qual tabela consultar, mas estou procurando conselhos sobre a melhor e mais elegante maneira de implementar isso (talvez em uma única consulta, usando UNION ALL ou SQL dinâmico).
Quais são as melhores práticas ou métodos alternativos para implementar essa lógica? Isso pode ser alcançado em uma única consulta ou por meio de outras técnicas que podem simplificar a manutenção?