Ich weiß, dass dies wirklich alt ist, aber ich mag den NULLIF
Trick für solche Szenarien und habe bisher keine Nachteile gefunden. Schauen Sie sich einfach mein kopierfähiges und einfügbares Beispiel an, das zwar nicht sehr praktisch ist, aber zeigt, wie man es verwendet.
NULLIF
Möglicherweise haben Sie einen kleinen negativen Einfluss auf die Leistung, aber ich denke, es sollte immer noch schneller sein als Unterabfragen.
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
Kommentare geschätzt :-)