我必须查找有效日期之前的报告历史数据。有一个日期跟踪表包含以下数据-
person_number start_date end_date name position
10 01/01/2016 31/12/4712 Scott Manager
11 02/01/2006 25/06/2017 Kirk Associate
11 26/06/2017 18/03/2023 Kirk Snr. Associate
11 19/03/2023 31/12/4712 Kirk DIRECTOR
当我在查询中传递生效日期作为今天的日期时-
查询1
**select person_number, name, position from abc
where nvl(:p_eff_date,trunc(sysdate)) between start_Date and end_date**
person_number start_date end_date name position
10 01/01/2016 31/12/4712 Scott Manager
11 19/03/2023 31/12/4712 Kirk DIRECTOR
我想现在显示历史输出。即,直到我们传入参数的生效日期。如果我们传递2023年3月1日日期,输出应为
person_number start_date end_date name position
10 01/01/2016 31/12/4712 Scott Manager
11 02/01/2006 25/06/2017 Kirk Associate
11 26/06/2017 18/03/2023 Kirk Snr. Associate
最后一行仍然会出现,因为01 st march数据在这个时间范围内。
2条答案
按热度按时间owfi6suc1#
您可以使用分析函数来完成此操作,而无需两次查询表:
其中,对于示例数据:
输出:
| 人员编号|名称|职位|
| --------------|--------------|--------------|
| 10个|爱丽丝|管理者|
| 十一|贝蒂|高级助理|
| 十一|贝蒂|协理|
fiddle
pod7payv2#
您可以将“as of”查询移动到子查询中,然后获取该子查询中ID所在的所有行。