Count
同一列 SQL 的多次計數
目前使用以下 SQL 從同一列獲取多個計數,但我的結果返回的結果都相同
SELECT act.OWNER_LOGIN, COUNT(CASE WHEN act.X_ACTIVITY ='Call' THEN 1 ELSE 0 end) AS YTD_Calls, COUNT(CASE WHEN act.X_ACTIVITY ='Email' THEN 1 ELSE 0 end) AS YTD_Email, COUNT(CASE WHEN act.X_ACTIVITY ='Turret' THEN 1 ELSE 0 end) AS YTD_Turret, COUNT(CASE WHEN act.X_ACTIVITY ='Instant Message' THEN 1 ELSE 0 end) AS YTD_Instant_Message FROM S_EVT_ACT act WITH(NOLOCK) WHERE act.OWNER_LOGIN IN ('AC52710','AE34410')
結果
OWNER_LOGIN YTD_Calls YTD_Email YTD_Turret YTD_Instant_Message AC52710 421 421 421 421 AE34410 4279 4279 4279 4279
所有這些值都應該不同,不確定我哪裡出錯了,或者是否有其他方法可以實現我想要的
你需要使用
SUM(CASE )
不COUNT(CASE )
Count 將為您提供所有條目的計數,即全為 0 和全為 1
Sum 將為您提供 1 的總數,但 0 將被忽略
count 將包括表達式不為空的所有行,如果要使用,請
count
確保 CASE 表達式為您不想計算的情況返回 NULL 值:COUNT(CASE WHEN act.X_ACTIVITY ='Call' THEN 1 end)
但不提供 ELSE 時,CASE 表達式將為活動不是呼叫的所有內容返回 NULL。