【发布时间】:2022-01-13 19:41:49
【问题描述】:
我有一个查询如何处理参数日期范围内的日期
select absence_name,
abs_start_date,
abs_end_date,
PERSON_ID
from abs_table JOIN PER_ALL_PEOPLE_F PAPF
on (papf.person_id = abs_table.person_id)
输出看起来像 -
ABSENCE_NAME abs_start_date abs_end_date PERSON_ID
Vacation 01-JAN-2021 03-FEB-2021 10
VACATION 24-NOV-2021 30-NOV-2021 01
Maternity 10-OCT-2021 25-OCT-2022 03
Paid Leave 27-NOV-2021 28-NOV-2021 04
VACATION 01-JUN-2021 19-NOV-2021 05
Maternity 01-NOV-2021 19-NOV-2022 06
Maternity 27-NOV-2021 19-DEC-2021 07
现在我想在输出 wrt 中处理三个条件。日期。参数日期为 p_From_Date - 2021 年 11 月 10 日 p_to_date 2021 年 11 月 28 日
- person_id #10 行不应出现,因为开始日期和结束日期不在此范围内。
- person_id #01 行应该出现在输出中。开始日期在 p_from_Date 之后,但结束日期在 p_tp_Date 之后
- person_id #03 行应该来了。虽然开始日期早于 p_from_date 但离开日期在此日期范围内。
- person_id #04 行应该是开始日期在日期范围之间。
- person_id #05 也应该来了。
我如何在上述查询中进行处理,以使人员的开始日期和结束日期在日期范围内,而不管它只是开始日期还是结束日期 应该返回该行。
此外,同一问题的第二部分,如果缺勤是产假,并且该人在开始日期和结束日期的整个范围内都在休产假,则应在输出中传递标志 Y。 否则为空
ABSENCE_NAME abs_start_date abs_end_date PERSON_ID Rule_flag
Vacation 01-JAN-2021 03-FEB-2021 10
VACATION 24-NOV-2021 30-NOV-2021 01
Maternity 10-OCT-2021 25-OCT-2022 03 Y
Paid Leave 27-NOV-2021 28-NOV-2021 04
VACATION 01-JUN-2021 19-NOV-2021 05
Maternity 01-NOV-2021 19-NOV-2022 06 y
Maternity 27-NOV-2021 19-DEC-2021 07
例如,员工 #3,06 在传递参数的整个期间都在休产假,则标志为 Y
员工 #07 休产假,但在 p_from 日期后的几天后,它不会是 Y。我们如何在上述相同查询中为此添加检查 a
【问题讨论】:
-
这是你要找的 -> stackoverflow.com/questions/325933/…
-
@PeterHenry 谢谢!这解决了我认为的第一部分
标签: sql oracle oracle-sqldeveloper