我有一个包含以下列的表: 1. User_Id 2. Work_Date
create table Test_Seq(user_id number, work_date date);
它有以下数据:
insert into Test_Seq values (1, '01-SEP-2013');
insert into Test_Seq values (1, '02-SEP-2013');
insert into Test_Seq values (1, '06-SEP-2013');
insert into Test_Seq values (1, '09-SEP-2013');
insert into Test_Seq values (1, '10-SEP-2013');
insert into Test_Seq values (2, '10-SEP-2013');
insert into Test_Seq values (2, '26-SEP-2013');
insert into Test_Seq values (2, '30-SEP-2013');
insert into Test_Seq values (2, '01-OCT-2013');
此表存储用户的 work_date。此 work_date 可能按顺序排列,也可能不按顺序排列。
还有一张表:
create table temp_holidys (holiday date);
insert into temp_holidys values ('27-SEP-2013');
insert into temp_holidys values ('31-DEC-2013');
我需要查询/pl sql 来获取最后一个 Work_Date(按 desc 排序)及其关联的序列开始日期;周六和周日不会有任何记录,但仍将按顺序处理(日历日)。
就像我们将周六和周日视为序列的一部分一样,如果那一天在 temp_holidys 表中,它也应该依次处理这一天(参见下面的#2)。
- 对于 user_id 1,这应该给我 '10-SEP-2013' 作为结束日期和 '06-SEP-2013' 作为开始日期
- 对于 user_id 2,这应该给我 '01-OCT-2013' 作为结束日期和 '26-SEP-2013' 作为开始日期(27-OCT-2013 需要按 temp_holidys 表中定义的顺序处理)
- 它必须是序列含义,例如在 # 1 中,对于用户 id 1,如果没有“09-SEP-2013”的记录,它应该返回“10-SEP-2013”作为开始日期。同样在 #2 中,对于用户 2,如果在 '26-SEP-2013' 上没有记录,它应该返回 30-SEP-2013' 作为开始日期。