Причината е, че включвате дясната таблица в WHERE клауза. Трябва да го преместите в ON условие на 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
Причината за това е, че WHERE клаузата се оценява след LEFT JOIN , който след това филтрира вашия NULL резултати от LEFT JOIN .
Включително дясната таблица на LEFT JOIN (или лявата таблица на RIGHT JOIN ) в WHERE клаузата ефективно трансформира OUTER JOIN в INNER JOIN .