• This...

    where p.DivisionCode in ('$','1','2','{','#','L','6','t','[')

    and p.PSIKey in ('1','2','3','4' ,'5','6','7','8','12','13','14','15','16','17','18','19','20','21')

    ... is turning your outer join into an inner join. Try putting those two conditions in the join predicate instead.

    John