La razón es porque está incluyendo la tabla de la derecha en WHERE
cláusula. Deberías mover eso a ON
condición de 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
La razón por la que hace esto es porque WHERE
la cláusula se evalúa después el LEFT JOIN
, que luego filtra su NULL
resultados de LEFT JOIN
.
Incluyendo la tabla de la derecha de un LEFT JOIN
(o la tabla de la izquierda de un RIGHT JOIN
) en el WHERE
cláusula transforma efectivamente el OUTER JOIN
en un INNER JOIN
.