A razão é porque você está incluindo a tabela da direita no
WHERE cláusula. Você deve mover isso para o ON condição do 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
A razão disso é porque o
WHERE cláusula é avaliada depois o LEFT JOIN , que filtra seu NULL resultados do LEFT JOIN . Incluindo a tabela à direita de um
LEFT JOIN (ou a tabela à esquerda de um RIGHT JOIN ) no WHERE cláusula transforma efetivamente o OUTER JOIN em um INNER JOIN .