[英]Sum if based on value in another column
在下面的代碼中,我希望AdminDuration
和BreakDuration
根據UserID
的值相加。 目前我無法弄清楚,它將所有Duration
的值與ReasonCode
7 相加。因此,每個UserId
都具有相同的Duration
(不是我想要的!)。
Select SkillTargetID AS UserID,
(SELECT sum(Duration)
from [t_Agent_Event_Detail]
where ReasonCode = 7
and DateTime > convert(DATETIME, '2013-01-31 08:00', 21)) as AdminDuration,
(SELECT sum(Duration)
from [t_Agent_Event_Detail]
where ReasonCode = 6
and DateTime > convert(DATETIME, '2013-01-31 08:00', 21)
and SkillTargetID = [t_Agent_Event_Detail].SkillTargetID) as BreakDuration
from [t_Agent_Event_Detail]
GROUP BY SkillTargetID
如果我理解正確的話,應該是:
SELECT SkillTargetID AS UserID,
sum(CASE WHEN ReasonCode = 7 THEN Duration ELSE 0 END) as AdminDuration,
sum(CASE WHEN ReasonCode = 6 THEN Duration ELSE 0 END) as BreakDuration
FROM [t_Agent_Event_Detail]
WHERE DateTime > convert(DATETIME, '2013-01-31 08:00', 21)
GROUP BY SkillTargetID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.