test it yourself as follows
create table #Tbl_status(Product varchar(1),
Lastupdate date,
Status varchar(10))
;with src
as
(
SELECT TOP (2048 )
'A' as product,
id = ISNULL(CAST(
ROW_NUMBER() OVER (ORDER BY (SELECT 1))
AS INT),0)
FROM master.sys.all_columns ac1
CROSS JOIN master.sys.all_columns ac2
CROSS JOIN master.sys.all_columns ac3
)
insert into #Tbl_status
select product, dateadd(mm,id,GETDATE()),
case
when id % 2 = 0 then 'Active' else 'Inactive' end as status
from src
;WITH src
AS (SELECT TOP (2048 ) 'A' AS product,
id = Isnull(Cast(Row_number()
OVER (
ORDER BY (SELECT 1)) AS INT), 0
)
FROM master.sys.all_columns ac1
CROSS JOIN master.sys.all_columns ac2
CROSS JOIN master.sys.all_columns ac3)
INSERT INTO #tbl_status
SELECT product,
Dateadd(mm, id, Getdate()),
CASE
WHEN id % 2 = 0 THEN 'Active'
ELSE 'Inactive'
END AS status
FROM src;
WITH tally_cte
AS (SELECT N=number
FROM master..spt_values
WHERE type = 'P'),
cte
AS (SELECT product,
status,
Dateadd(dd, n, lastupdate) AS LastUpdate
FROM #tbl_status a,
tally_cte b) SELECT *
FROM cte
WHERE lastupdate < (SELECT Max(lastupdate)
FROM #tbl_status)
UNION ALL
SELECT product,
status,
lastupdate
FROM #tbl_status
WHERE status = 'InActive'
drop table #Tbl_status