I have two tables with exactly same structure
x
table 1 - Data_2020 --> This is an static table which has data from year 2020 and is not being updated anymore (archive table). It has around 4 million records
table 2 - Data_2021 --> This is my current table which is increasing everyday. It has currently 0.8 million records but it will increase till December.
Now I need to ‘union all’ these two tables and I want only last 13 month data every time I run below query
Select * from Data_2020
union all
select * from Data_2021
I have to run this every month and need only last 13 month data. How can I apply the filter? I have a date column ‘date’ in both the tables.
Advertisement
Answer
declare @StartDate datetime,@CurrentDate datetime
set @CurrentDate = GETDATE();
set @StartDate = DATEADD(MONTH,-13,@CurrentDate)
SELECT *
FROM Data_2020
WHERE DateFieldName > @StartDate -- Or DateFieldName BETWEEN @StartDate AND @CurrentDate
UNION ALL
SELECT *
FROM Data_2021
WHERE DateFieldName > @StartDate -- Or DateFieldName BETWEEN @StartDate AND @CurrentDate