나는 이것이 실제로 오래되었다는 것을 알고 있지만, 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
의견 감사합니다 :-)