Pull valid row from table even when joining table has no valid data
Try rearranging your conditions like so:

...
LEFT OUTER JOIN TableB B ON A.KeyField1 = B.KeyField1 
AND A.KeyField2 = B.KeyField2 
AND B.Status &lt;&gt; 'D' 
WHERE A.KeyField = '11111' 
AND A.Status &lt;&gt; 'D' 
...


When you put an outer table in the WHERE clause, you force SQL Server to filter only to rows that exist and where that value can be explicitly evaluated, in other words you change your outer join to an inner join.