Uw query voert een outer join uit terwijl u probeert een telling uit te voeren. Als B.UserId wordt vermeld als NULL, retourneert de count(* ) ook NULL. U kunt dit oplossen door expliciet een telling van A uit te voeren met "count (A.*)" of door het in ISNULL() te wikkelen.
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
of
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