SQL> create table PARTNER_CALENDAR(partner# NUMBER,break_start_date date, break_end_date Date, break_reason NUMBER);
Table created.
SQL>
SQL> insert into partner_calendar values (11122,trunc(sysdate-42),trunc(sysdate-40),23);
1 row created.
SQL> insert into partner_calendar values (11122,trunc(sysdate-88),trunc(sysdate-80),23);
1 row created.
SQL> insert into partner_calendar values (11122,trunc(sysdate-75),trunc(sysdate-70),23);
1 row created.
SQL> insert into partner_calendar values (11122,trunc(sysdate-23),trunc(sysdate-20),23);
1 row created.
SQL> insert into partner_calendar values (11122,trunc(sysdate-2),trunc(sysdate+5),23);
1 row created.
SQL> insert into partner_calendar values (11123,trunc(sysdate-45),trunc(sysdate-41),23);
1 row created.
SQL> insert into partner_calendar values (11123,trunc(sysdate-78),trunc(sysdate-70),23);
1 row created.
SQL> insert into partner_calendar values (11123,trunc(sysdate-65),trunc(sysdate-60),23);
1 row created.
SQL> insert into partner_calendar values (11123,trunc(sysdate-23),trunc(sysdate-20),23);
1 row created.
SQL> insert into partner_calendar values (11123,trunc(sysdate-2),trunc(sysdate+5),23);
1 row created.
SQL>
SQL>
SQL> select p.*,
2 ( select count(case when to_char(break_end_date+level-1,'D') not in ('1','7') then 1 end )
3 from dual
4 connect by level <= ceil(break_end_date - break_start_date+1)
5 ) as days
6 from partner_calendar p
7 /
PARTNER# BREAK_STA BREAK_END BREAK_REASON DAYS
---------- --------- --------- ------------ ----------
11122 04-OCT-19 06-OCT-19 23 2
11122 19-AUG-19 27-AUG-19 23 7
11122 01-SEP-19 06-SEP-19 23 4
11122 23-OCT-19 26-OCT-19 23 2
11122 13-NOV-19 20-NOV-19 23 6
11123 01-OCT-19 05-OCT-19 23 3
11123 29-AUG-19 06-SEP-19 23 6
11123 11-SEP-19 16-SEP-19 23 5
11123 23-OCT-19 26-OCT-19 23 2
11123 13-NOV-19 20-NOV-19 23 6
10 rows selected.
SQL>