COUNT hanya mengembalikan COUNT untuk status yang dia temukan untuk Microsoft. Dan itu Ditolak dan Ditarik. Anda harus memberi makan kueri semua status dan COUNT kemunculan semuanya. Yang tidak muncul di tabel akan dibiarkan dengan 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;
Apa yang dilakukannya adalah:
SELECT DISTINCT STATUS
FROM tab1
Ini menemukan semua status yang mungkin. Jika Anda memiliki tabel referensi dengan semua kemungkinan status, lebih baik Gunakan itu daripada kueri ini.
Kemudian Anda melakukan LEFT JOIN pada tabel ini berdasarkan status dan companyName. Dengan cara ini, Anda hanya akan mendapatkan kecocokan di STATUS jika ada catatan di atas meja. Jika ada, tambahkan 1 ke SUM, jika tidak, tambahkan 0.