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
.