【发布时间】:2014-12-06 07:40:35
【问题描述】:
我有一个 Table1 的员工数据如下
| empid | department | startdate | enddate |
| 1 | D1 | 2014-02-05 | 2014-06-18 |
| 1 | D3 | 2013-08-29 | 2014-02-05 |
| 2 | D3 | 2014-05-07 | 2014-06-18 |
| 2 | D4 | 2013-08-29 | 2014-05-06 |
| 2 | D3 | 2014-06-19 | 2014-12-01 |
我有另一个表 Table2 有他们的缺席数据
empid department absentceDate
1 D3 2013-09-24
1 D3 2013-09-30
1 D3 2013-10-25
1 D1 2014-02-06
1 D1 2014-02-08
2 D3 2013-08-30
2 D3 2013-09-30
2 D3 2013-10-30
2 D3 2014-11-11
2 D4 2014-05-10
我使用以下代码加入了这两个表,以根据 empid 查找员工的缺勤日期计数:
SELECT T1.empid as empid,
T1.department as department,
COUNT(absencedate) AS NumDaysAbsent ,
startdate, enddate,
FROM Table1 T1
JOIN Table2 T2 SE ON sa.empid = se.empid
GROUP BY T1.empid ,
T1.department
startdate, enddate
我的结果如下
empid department NumDaysAbsent startdat enddate
1 D1 5 2014-02-05 2014-06-18
1 D3 5 2013-08-29 2014-02-05
2 D3 5 2014-05-07 2014-06-18
2 D3 5 2014-06-19 2014-12-01
2 D4 5 2013-08-29 2014-05-06
相反,我想按部门对 numberofAbsences 进行分组并将它们作为
empid department NumDaysAbsent startdate enddate
1 D1 2 2014-02-05 2014-06-18
1 D3 3 2013-08-29 2014-02-05
2 D3 3 2014-05-07 2014-06-18
2 D3 1 2014-06-19 2014-12-01
2 D4 1 2013-08-29 2014-05-06
我该如何进行?我一直在试图弄清楚如何实现这一目标。我如何按开始日期和结束日期对他们进行分组,并特别显示他们在那个部门的缺勤次数? 有什么输入吗?我正在尝试在 SQL Server 中执行此操作
【问题讨论】:
-
您能否发布适当的预期结果以便我们更好地理解?例如,对于 empid 1 ,D1 的总缺勤时间应该是 2 天,而您说您预计需要 3 天。同样对于您获得的实际结果。您是否因所有记录缺勤 5 天?
-
感谢您的回复,Jitesh。我对 D1 的 emp1 的预期输出是 2。
标签: sql sql-server-2008