Ich weiß, das ist wirklich alt, aber ich mag die NULLIF
Trick für solche Szenarien, und ich habe bisher keine Nachteile festgestellt. Sehen Sie sich einfach mein Copy&Paste-Beispiel an, das zwar nicht sehr praktisch ist, aber demonstriert, wie man es verwenden kann.
NULLIF
könnte eine kleine negative Auswirkung auf die Leistung haben, 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 erwünscht :-)