मुझे पता है कि यह वास्तव में पुराना है, लेकिन मुझे NULLIF
इस तरह के परिदृश्यों के लिए चाल पसंद है, और मुझे अब तक कोई डाउनडाइड नहीं मिला। बस मेरी कॉपी और पेस्ट करने योग्य उदाहरण देखें, जो हालांकि बहुत व्यावहारिक नहीं है, लेकिन यह दर्शाता है कि इसका उपयोग कैसे किया जाए।
NULLIF
आपको प्रदर्शन पर एक छोटा सा नकारात्मक प्रभाव दे सकता है, लेकिन मुझे लगता है कि यह अभी भी उप-क्षेत्रों की तुलना में तेज होना चाहिए।
DECLARE @tbl TABLE ( id [int] NOT NULL, field [varchar](50) NOT NULL)
INSERT INTO @tbl (id, field)
SELECT 1, 'Manager'
UNION SELECT 2, 'Manager'
UNION SELECT 3, 'Customer'
UNION SELECT 4, 'Boss'
UNION SELECT 5, 'Intern'
UNION SELECT 6, 'Customer'
UNION SELECT 7, 'Customer'
UNION SELECT 8, 'Wife'
UNION SELECT 9, 'Son'
SELECT * FROM @tbl
SELECT
COUNT(1) AS [total]
,COUNT(1) - COUNT(NULLIF([field], 'Manager')) AS [Managers]
,COUNT(NULLIF([field], 'Manager')) AS [NotManagers]
,(COUNT(1) - COUNT(NULLIF([field], 'Wife'))) + (COUNT(1) - COUNT(NULLIF([field], 'Son'))) AS [Family]
FROM @tbl
टिप्पणियाँ सराहना की :-)