I thin there can frist select all right next Deadline date, I think you can try this:
select a.reg_id,b.deadline_date
from requirements a,(
select a.id,a.reg_id,a.deadline_date
from
(
select a.id,a.reg_id,a.deadline_date
from deadline a,
(select a.* from deadline a,target b where a.Status_ID=b.Status_ID) b
where a.reg_id=b.reg_id and a.deadline_date>=b.deadline_date
union
select a.id,a.reg_id,a.deadline_date
from deadline a
where a.Status_ID not in (select Status_ID from target)
) a
group by a.id,a.reg_id,a.deadline_date
) b
where a.reg_id=b.reg_id
good luck.