Twoje zapytanie wykonuje sprzężenie zewnętrzne podczas próby zliczenia. Jeśli B.UserId jest wymieniony jako NULL, to count(* ) również zwróci NULL. Możesz to naprawić, jawnie wykonując zliczanie A za pomocą "count (A.*)" lub umieszczając je w ISNULL().
select A.UserId, B.UserId, count(A.*)
from select tableA A
left outer join tableB B
on A.UserBNumber = B.Number
group by A.UserId, B.UserId
lub
select A.UserId, B.UserId, isnull(count(*),0)
from select tableA A
left outer join tableB B
on A.UserBNumber = B.Number
group by A.UserId, B.UserId