Din fråga utför en yttre koppling medan den försöker utföra en räkning. Om B.UserId är listad som NULL, kommer count(* ) att returnera NULL också. Du kan fixa detta genom att explicit utföra en räkning av A med "count (A.*)" eller genom att slå in det i 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
eller
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