Årsagen er, at du inkluderer den højre tabel i WHERE klausul. Du skal flytte det til ON betingelse for LEFT JOIN :
Select P.appId, S.stepId, S.section, P.start
From #appSteps S With (NoLock)
Left Join #appProgress P On S.stepId = P.stepId
And P.appId = 101
Where S.section Is Not Null
Grunden til at det gør dette, er fordi WHERE klausul evalueres efter LEFT JOIN , som derefter filtrerer din NULL fra resultater fra LEFT JOIN .
Inklusive den højre tabel for en LEFT JOIN (eller den venstre tabel i en RIGHT JOIN ) i WHERE klausulen transformerer effektivt OUTER JOIN ind i en INNER JOIN .