La tua clausola where sta riconvertendo il join esterno in uno interno.
Le righe non corrispondenti conservate dall'outer join
avranno tutti NULL
valori per documentation.status
quindi il tuo documentation.status != 3
condizione li filtrerà indietro (il risultato dell'espressione NULL !=3
è unknown
non true
).
Per evitare questo problema usa
select documentation_reference.ref_docnumber,
documentation.filename
from documentation_reference
left outer join documentation
on ref_docnumber = documentation.docnumber
and documentation.status != 3
where documentation_reference.docnumber = 'TP-036'
Nota che il documentation.status != 3
il predicato viene spostato nel JOIN
condizione.