Adding Where Clause Skews Data
You must move the test on beenverified  from the WHERE clause to LEFT ... ON ...:

SELECT sa.empname
    , coalesce(Da.itemssold, 0)
FROM #ShowAll sa
LEFT JOIN #Data da
    ON sa.empid = da.empid 
    AND da.beenverified = 'Yes';


With a LEFT JOIN, when there is no match on empid between the two tables, this query (minus the WHERE clause) returns NULL for beenverified (and other columns from #Data):

empname itemssold   beenverified
JJ      14          Yes
AA      12          No
BB      13          No
CC      NULL        NULL
DD      NULL        NULL
RR      NULL        NULL


If beenverified is tested in the WHERE clause, it does not return rows where the condition is not met: 


beenverified IS NULL 
beenverified &lt;&gt; 'Yes' (i.e. = 'No')


Only row JJ is then valid. With the test in the WHERE clause, this query behaves like an INNER JOIN ....

Coalesce is then added in order to replace NULL by 0.