Váš dotaz provádí vnější spojení při pokusu o provedení počítání. Pokud je B.UserId uvedeno jako NULL, pak count(*) vrátí také hodnotu NULL. Můžete to opravit tak, že explicitně provedete počet A pomocí "count (A.*)" nebo to zabalíte do 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
nebo
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