【发布时间】:2026-01-16 13:45:02
【问题描述】:
如果日期差异有重叠,如何限制它们的聚合。
如果我有一张这样的任务:
emp_num from_date to_date
1336 2017-02-07 00:00:00.000 2017-02-08 00:00:00.000
1336 2017-02-15 00:00:00.000 2017-02-16 00:00:00.000
1336 2017-02-21 00:00:00.000 2017-02-23 00:00:00.000
1336 2017-02-26 00:00:00.000 2017-02-26 00:00:00.000
1336 2017-02-28 00:00:00.000 2017-03-01 00:00:00.000
我想获得一年中特定月份 (to_date - from_date) 的总和。
在这个例子中2-2017年总任务天数的结果应该等于9天。
我进行了以下查询,但由于与下个月重叠,我得到 10 days 而不是 9 days!
SELECT b.emp_num,b.NAME AS FullName ,c.DEPTNAME AS DeptName,d.camp_name AS CampName
,SUM(DATEDIFF(day,a.from_date ,a.to_date)+1) AS Mission_SUM
FROM Mission a INNER JOIN Employee b
ON a.emp_num = b.emp_num
INNER JOIN DEPARTMENT c
ON b.dep_code = c.dep_code
INNER JOIN Branch d
ON d.camp_code = b.camp_code
where ((Year(from_date) =2017 AND Month(from_date)=2) OR (Year(to_date) =2017 AND Month(to_date)=2))
and mission_type = 1
GROUP BY b.emp_num,b.NAME,c.DEPTNAME,d.camp_name
ORDER BY d.camp_name,c.DEPTNAME,b.NAME
我想获取员工在 2-2017 的总天数?
【问题讨论】:
标签: sql sql-server date sql-server-2012 aggregate