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 tableA (id varchar(10), descr varchar(10), eff_date date);
insert into tableA values ('A', 'XXX', '2019/6/10');
insert into tableA values ('A', 'YYY', '2019/6/13');
insert into tableA values ('B', 'ZZZ', '2019/6/15');
select * from tableA;
id descr eff_date
A XXX 2019-06-10
A YYY 2019-06-13
B ZZZ 2019-06-15
with a as (
select a.id, a.descr, a.eff_date,
dateadd(day, -1, lead(a.eff_date, 1, '2019-06-18') over (partition by id order by eff_date)) as end_date
from tablea a
),
cte as (
select id, descr, eff_date, end_date
from a
union all
select id, descr, dateadd(day, 1, eff_date), end_date
from cte
where eff_date < end_date
)
select id, descr, eff_date
from cte
order by id, eff_date
id descr eff_date
A XXX 2019-06-10
A XXX 2019-06-11
A XXX 2019-06-12
A YYY 2019-06-13
A YYY 2019-06-14
A YYY 2019-06-15
A YYY 2019-06-16
A YYY 2019-06-17
B ZZZ 2019-06-15
B ZZZ 2019-06-16
B ZZZ 2019-06-17