sql - SQL - 使用日期表计算员工最后工作的天数?
问题描述
我有一张表格,显示员工上次工作的时间。它看起来像下面
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 天下班。
有人可以帮忙吗?我以前没有真正使用过日期表。感谢任何帮助
杰斯
解决方案
这是使用datediff
with的一个case
:
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
用作日期表。注意检查——如果你使用equals outer join
,这可以确保你得到匹配的结果而不是值。null
推荐阅读
- java - Arraylist 将方法添加到每个项目的最后一个值中
- gradle - Jacoco Gradle 在整个项目级别(不是在模块级别)的最小代码覆盖率阈值
- ios - 如何在不使用 reverse() 函数的情况下反转字符串,希望反转是逐字而不是从最后一个索引到 swift 中的第一个索引
- javascript - 如何在我的 javascript 函数中使用来自 html 表单的输入?
- image - UWP 我的子弹在哪里与画布上的图像相交(相对于图像的坐标)
- javascript - JavaScript 中的模糊搜索,结果按相关性排序
- ruby-on-rails - 可以将任何控制器方法移出类外到模块吗?
- c# - 在 FROM 子句中带有参数的存储过程中使用 LIKE 和 %
- java - 跨域会话共享 Spring Boot
- java - 如何使用 MockitoJUnitRunner 模拟 unmodifiableMap