add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table desks
(
start_date date,
stop_date date,
id varchar(10),
desk_number int
);

insert into desks values
('2020/01/20', '2020/05/20', '0100', 55),
('2020/03/20', '2020/06/20', '0100', 56),
('2020/02/22', '2020/04/22', '0200', 91);
3 rows affected
create table teams
(
start_date date,
stop_date date,
id varchar(10),
team_number int
);

insert into teams values
('2020/01/20', '2020/04/20', '0100', 2),
('2020/02/20', '2020/06/20', '0100', 3),
('2020/02/22', '2020/04/22', '0200', 8);
3 rows affected
SELECT CASE
WHEN teams.start_date > desks.start_date
THEN teams.start_date
ELSE desks.start_date
END start_date
, CASE
WHEN teams.stop_date < desks.stop_date
THEN teams.stop_date
ELSE desks.stop_date
END stop_date
, desks.id
, desks.desk_number
, teams.team_number
FROM desks
JOIN teams
ON desks.start_date < teams.stop_date
AND teams.start_date < desks.stop_date
AND teams.id = desks.id
ORDER BY desks.id, 1
start_date stop_date id desk_number team_number
2020-01-20 2020-04-20 0100 55 2
2020-02-20 2020-05-20 0100 55 3
2020-03-20 2020-06-20 0100 56 3
2020-03-20 2020-04-20 0100 56 2
2020-02-22 2020-04-22 0200 91 8