首页 > 解决方案 > 如何构建一个查询,为员工提取员工 ID 列表,这些员工的值发生在员工独有的日期范围内?

问题描述

我需要为在纠正措施日期后 180 天内采取纠正措施类型 ID 列表的任何员工提取不同的员工 ID。

因此,如果我的员工 John Doe 在 2018 年 7 月 8 日获得了类型 id 123 的纠正措施,我需要知道他是否在当前纠正措施之前的 180 天内或 60 天内获得了类型 ID 123、456 或 789 的纠正措施几天后。

样品表

在上面的示例表中,我希望它引入员工 ID 1 和 5,因为他们在 180 天内采取了纠正措施。

标签: sqloracle

解决方案


您可以使用以下命令执行此操作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)

推荐阅读