COUNT vrací pouze COUNT pro stav, který zjistí pro Microsoft. A těmi jsou Denied a Wthdrawn. Do dotazu musíte zadat všechny stavy a POČÍTAT výskyty všech z nich. Ty, které se neobjeví, budou v tabulce ponechány s 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;
Co to dělá je:
SELECT DISTINCT STATUS
FROM tab1
Tím se najdou všechny možné stavy. Pokud máte referenční tabulku se všemi možnými stavy, ještě lépe ji použijte místo tohoto dotazu.
Poté provedete LEVÝ JOIN na této tabulce podle stavu a názvu společnosti. Tímto způsobem získáte shodu ve STATUS pouze v případě, že je na stole záznam. Pokud existuje, přidáte 1 k SUM, jinak přidáte 0.