私はこれが本当に古いことを知っていますが、私はその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
コメントありがとうございます:-)