Twoja klauzula where przekształca zewnętrzne sprzężenie z powrotem w wewnętrzne.
Niepasujące wiersze zachowane przez outer join wszystkie będą miały NULL wartości dla documentation.status więc twoja documentation.status != 3 warunek odfiltruje je z powrotem (wynik wyrażenia NULL !=3 jest unknown nie true ).
Aby uniknąć tego problemu, użyj
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'
Zauważ, że documentation.status != 3 predykat jest przeniesiony do JOIN stan.