sql - 如果基于另一列中的值求和

标签 sql sum

在下面的代码中,我希望AdminDurationBreakDuration基于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

关于sql - 如果基于另一列中的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631625/

相关文章:

mySQL - 获取正在查询的分片

mysql - SQL:如何多次连接同一个表?

mysql - 循环表中数字列的总计(不是查询的总计)

datetime - mySql 对列求和并仅返回过去 10 分钟内包含 和 的条目

performance - 将数字拆分为总和组件

sql - 如何在单个语句中获取 Northwind 数据库中 Order Details 表中每个产品的总销售额?

php - 使用 group_concat 的复杂 SQL 查询

mysql - 尝试根据第二个表查询的连接结果进行 MySQL Sum

arrays - 如何总结单元格数组中的所有数组(相同大小)?

sql - 如何对结果和当前值进行对角减法