COUNT returnerer kun COUNT for den status, han finder for Microsoft. Og dem er Denied og Wthdrawn. Du skal give forespørgslen alle statusser og TÆLLE forekomsterne af dem alle. De, der ikke vises, vil stå med 0:
i tabellenSELECT 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;
Hvad dette gør er:
SELECT DISTINCT STATUS
FROM tab1
Dette finder alle mulige statusser. Hvis du har en referencetabel med alle mulige statusser, er det endnu bedre at bruge den i stedet for denne forespørgsel.
Så laver du en LEFT JOIN på denne tabel efter status og firmanavn. På denne måde får du kun en kamp i STATUS, hvis der er rekord på bordet. Hvis der er, tilføjer du 1 til SUMMEN, ellers tilføjer du 0.