8

以下のコードでは、の値に基づいてAdminDurationとを合計したいと思います。現時点では理解できず、すべてのsの値を7で合計します。その結果、すべてが同じになります(私が望むものではありません!)。BreakDurationUserIDDurationReasonCodeUserIdDuration

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
4

1 に答える 1

17

私があなたを正しく理解していれば、次のようになります。

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
于 2013-01-31T17:34:34.540 に答える