Il COUNT restituisce solo il COUNT per lo stato che trova per Microsoft. E quelli sono negati e ritirati. Devi alimentare la query tutti gli stati e COUNT le occorrenze di tutti loro. Quelli che non compaiono nella tabella rimarranno con 0:
SELECT a.STATUS,
SUM(CASE
WHEN b.STATUS IS NOT NULL
THEN 1
ELSE 0
END) AS StatusCount
FROM (
SELECT DISTINCT STATUS
FROM tab1
) a
LEFT JOIN tab1 b ON a.STATUS = b.STATUS AND b.CompanyName = 'Microsoft'
GROUP BY a.STATUS;
Ciò che fa è:
SELECT DISTINCT STATUS
FROM tab1
Questo trova tutti gli stati possibili. Se hai una tabella di riferimento con tutti gli stati possibili, meglio ancora Usala al posto di questa query.
Quindi fai un LEFT JOIN su questa tabella per stato e companyName. In questo modo, otterrai una corrispondenza in STATUS solo se sul tavolo è presente un record. Se c'è, aggiungi 1 alla SOMMA, altrimenti aggiungi 0.