SQL-使用日期表来计算员工上次工作的天数?

时间:2018-12-12 16:44:32

标签: sql sql-server-2012

我有一张表,显示员工上次工作的时间。看起来像下面的

EMPID           Sickness          Date
23333             N            01-FEB-2018
23333             N            02-FEB-2018
23333             N            10-FEB-2018
23333             N            11-FEB-2018

我想做的是加入一个日期表,并添加一个额外的列,该列显示雇员超过5天不工作的日期。基于上述内容的示例输出看起来像这样

EMPID           Sickness          NewDate              AbsFlagAdded
23333             N            01-FEB-2018              0
23333             N            02-FEB-2018              0
23333             N            03-FEB-2018              0
23333             N            04-FEB-2018              0
23333             N            05-FEB-2018              0
23333             N            06-FEB-2018              0
23333             N            07-FEB-2018              1
23333             N            08-FEB-2018              0
23333             N            09-FEB-2018              0
23333             N            10-FEB-2018              0
23333             N            11-FEB-2018              0

AbsFlagAdded在2月7日标记为1,因为这是EMPID 23333根据原始表连续第5天下班。

有人可以帮忙吗?我以前没有真正使用过Date表。感谢任何帮助

杰西

1 个答案:

答案 0 :(得分:1)

以下是将datediffcase结合使用的一个例子:

select t.empid, d.dt, 
       case when datediff(day, max(t.dt), d.dt) = 5 then 1 else 0 end as absflaggadded
from dates d
    left join yourtable t on d.dt >= t.dt
group by t.empid, d.dt
order by d.dt

这使用dates作为日期表。注意outer join检查-如果您使用equals,这可以确保获得匹配的结果,而不是null值。