【问题标题】:Count of dates over a period of time一段时间内的日期计数
【发布时间】: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


【解决方案1】:

我认为你需要更多的加入条件,包括部门和日期。我的最佳猜测是:

SELECT   T1.empid as empid, T1.department as department,
         COUNT(absencedate) AS NumDaysAbsent ,
         startdate, enddate,
FROM     Table1 T1 JOIN
         Table2 T2
         ON t1.empid = t2.empid AND t1.department = t2.department and
            t2.absencedate between t1.startdate and t1.enddate
GROUP BY T1.empid, T1.department, startdate, enddate;

【讨论】:

  • 谢谢,戈登!这是一个宝贵的意见。你教我在 where 条件下使用 between!
猜你喜欢
  • 2022-09-26
  • 1970-01-01
  • 2022-09-27
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 2014-04-16
  • 1970-01-01
相关资源
最近更新 更多