मुझे पता है कि यह वास्तव में पुराना है, लेकिन मुझे 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
टिप्पणियाँ सराहना की :-)