COUNT केवल उस स्थिति के लिए COUNT लौटा रहा है जो उसे Microsoft के लिए मिली है। और वे अस्वीकृत और निकाले गए हैं। आपको क्वेरी को सभी स्थितियों में फीड करना होगा और उन सभी की घटनाओं को COUNT करना होगा। जो दिखाई नहीं देंगे वे तालिका में 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
यह सभी स्थितियों को संभव पाता है। यदि आपके पास सभी संभावित स्थितियों के साथ एक संदर्भ तालिका है, तो बेहतर होगा कि इस क्वेरी के बजाय इसका उपयोग करें।
फिर आप इस टेबल पर स्टेटस और कंपनीनाम के अनुसार लेफ्ट जॉइन करते हैं। इस तरह, टेबल पर रिकॉर्ड होने पर ही आपको STATUS में एक मैच मिलेगा। अगर है, तो आप एसयूएम में 1 जोड़ते हैं, अन्यथा आप 0 जोड़ते हैं।