You can use this query. It joins 2 identical subqueries where I used dense_rank()
to get the order of record updates and then I get the record where the status changed in the join condition:
select Y.* from
(
select RecordUpdateDate, Status, ExpireDate,
dense_rank() over (order by RecordUpdateDate) as rank
from table1
) X
inner join
(
select RecordUpdateDate, Status, ExpireDate,
dense_rank() over (order by RecordUpdateDate) as rank
from table1
) Y
on X.rank = Y.rank - 1 and X.Status = 'Closed' and Y.Status = 'Active'