MySQL:按日期从同列总和扣除值的资源计划工时查询
解决MySQL工时计算查询需求
没问题,我来帮你搞定这个查询。根据你的需求,我们需要按资源分组,计算「总计划工时减去下月到期任务的工时」,下面是具体的实现方案:
核心查询语句
假设你的表名为task_resources(记得替换成实际表名),SQL语句如下:
SELECT `Resource Name`, `Supervisor Name`, (SUM(`Planned Effort`) - SUM( CASE WHEN YEAR(`Planned Finish Date`) = YEAR(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)) AND MONTH(`Planned Finish Date`) = MONTH(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)) THEN `Planned Effort` ELSE 0 END )) AS `Planned Efforts` FROM `task_resources` GROUP BY `Resource Name`, `Supervisor Name`;
逻辑解释
- 总工时计算:
SUM(Planned Effort)会累加当前资源所有任务的计划工时总和 - 下月工时扣除:用
CASE语句筛选出计划完成日期为下月的任务,把这些任务的工时加起来;如果任务不属于下月,就按0计算 - 最终结果:总工时减去下月工时,得到你需要的
Planned Efforts
自定义月份的扩展
如果不是要计算「当前下月」,而是指定某个月份(比如你例子里的截至2018年5月31日,需要扣除2018年6月的工时),可以把日期判断部分改成固定值:
SELECT `Resource Name`, `Supervisor Name`, (SUM(`Planned Effort`) - SUM( CASE WHEN YEAR(`Planned Finish Date`) = 2018 AND MONTH(`Planned Finish Date`) = 6 THEN `Planned Effort` ELSE 0 END )) AS `Planned Efforts` FROM `task_resources` GROUP BY `Resource Name`, `Supervisor Name`;
这样就能精准匹配你示例里的计算逻辑啦。
内容的提问来源于stack exchange,提问作者user3436773
相关产品推荐
相关产品推荐

