Is there any reason why you aren't using the NVL clause???

NVL(p.plan_date, p.plan_date) plan_date

Are you sure that you aren't generating a cartesian product?