Причината е, че включвате дясната таблица в 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
.