我有一个表,显示员工最后一次工作的时间。它看起来像下面这样
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 02月7号的AbsFlagAdded被标记为1,因为这是eMPID23333基于原始表连续第5天休假。
有没有人能帮上忙?我以前并没有真正使用过日期表。感谢任何帮助
杰西
发布于 2018-12-13 01:04:03
下面是在case中使用datediff的一个例子
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检查--如果使用null,这将确保您获得匹配结果,而不是equals值。
https://stackoverflow.com/questions/53747628
复制相似问题