sql - 如何构建一个查询,为员工提取员工 ID 列表,这些员工的值发生在员工独有的日期范围内?
问题描述
我需要为在纠正措施日期后 180 天内采取纠正措施类型 ID 列表的任何员工提取不同的员工 ID。
因此,如果我的员工 John Doe 在 2018 年 7 月 8 日获得了类型 id 123 的纠正措施,我需要知道他是否在当前纠正措施之前的 180 天内或 60 天内获得了类型 ID 123、456 或 789 的纠正措施几天后。
在上面的示例表中,我希望它引入员工 ID 1 和 5,因为他们在 180 天内采取了纠正措施。
解决方案
您可以使用以下命令执行此操作join
:
select c.*, cnext.*
from corrective c join
corrective cnext
on cnext.employee_id = c.employee_id and
cnext.ca_dt > c.ca_dt - 180 and
cnext.ca_dt < c.ca_dt + 60 and
cnext.ca_type in (123, 456, 789)
推荐阅读
- ruby - 如何组织您的自定义文件目录(Rails 6.1.3.2)?
- javascript - discord.js 中的 MongoDB 缓存
- c - Windows Api,COM口:接收后传输数据
- regex - 替换@之前的所有字符
- python - 如何在使用 BERT 的掩码语言建模中将表情符号添加到我的标记器?
- javascript - 我可以将其他脚本动态加载到现有工作人员中吗?
- python - 如何从数据框中的下一列中获取数据
- php - Laravel 8. Eloquent 模型工厂(播种,数据库测试)。如果模型已经存在,如何不创建模型?
- android - 每次单击登录按钮时都会重建登录小部件
- facebook - 适用于 Android/Unity 的 Facebook SDK:更改活动(类)名称而不影响实时应用?