COUNT връща само COUNT за състоянието, което намира за Microsoft. И те са Отказани и Изтеглени. Трябва да подадете на заявката всички състояния и да БРОИТЕ срещанията на всички тях. Тези, които не се показват, в таблицата ще бъдат оставени с 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;
Това прави следното:
SELECT DISTINCT STATUS
FROM tab1
Това открива всички възможни състояния. Ако имате справочна таблица с всички възможни състояния, още по-добре я използвайте вместо тази заявка.
След това правите LEFT JOIN на тази таблица по статус и име на компания. По този начин ще получите съвпадение в STATUS само ако има запис на масата. Ако има, добавяте 1 към SUM, в противен случай добавяте 0.