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.
declare @pricesDefault table (product_id int, price decimal(20, 4))

insert into @pricesDefault
values
(1, 100),
(2, 120),
(3, 200),
(4, 50)

declare @discountTypeA table (product_id int, modifier decimal(4,2), startdate date, enddate date)
insert into @discountTypeA
values
(1, 0.75, '2019-06-06', '2019-07-06'),
(1, 0.95, '2019-08-06', '2019-08-20'),
(1, 0.92, '2019-05-06', '2019-06-05'),
(2, 0.75, '2019-06-08', '2019-07-19'),
(2, 0.95, '2019-07-20', '2019-09-20'),
(3, 0.92, '2019-05-06', '2019-06-05')

declare @discountTypeB table (product_id int, modifier decimal(4,2), startdate date, enddate date)
insert into @discountTypeB
values
(1, 0.85, '2019-06-20', '2019-07-03'),
(1, 0.65, '2019-08-10', '2019-08-29'),
(1, 0.65, '2019-09-10', '2019-09-27'),
(3, 0.75, '2019-05-08', '2019-05-19'),
(2, 0.95, '2019-05-20', '2019-05-21'),
(3, 0.92, '2019-09-06', '2019-09-09') ;
with prices as (
select a.product_id, v.dte
from @discountTypeA a cross apply
(values (a.startdate), (a.enddate)) v(dte)
union -- on purpose to remove duplicates
select b.product_id, v.dte
product_id price a_discount b_discount startdate enddate
1 92.00000000 0.08 null 2019-05-06 2019-06-05
1 100.00000000 null null 2019-06-05 2019-06-06
1 75.00000000 0.25 null 2019-06-06 2019-06-20
1 63.75000000 0.25 0.15 2019-06-20 2019-07-03
1 75.00000000 0.25 null 2019-07-03 2019-07-06
1 100.00000000 null null 2019-07-06 2019-08-06
1 95.00000000 0.05 null 2019-08-06 2019-08-10
1 61.75000000 0.05 0.35 2019-08-10 2019-08-20
1 65.00000000 null 0.35 2019-08-20 2019-08-29
1 100.00000000 null null 2019-08-29 2019-09-10
1 65.00000000 null 0.35 2019-09-10 2019-09-27
1 100.00000000 null null 2019-09-27 null
2 114.00000000 null 0.05 2019-05-20 2019-05-21
2 120.00000000 null null 2019-05-21 2019-06-08
2 90.00000000 0.25 null 2019-06-08 2019-07-19
2 120.00000000 null null 2019-07-19 2019-07-20
2 114.00000000 0.05 null 2019-07-20 2019-09-20
2 120.00000000 null null 2019-09-20 null
3 184.00000000 0.08 null 2019-05-06 2019-05-08
3 138.00000000 0.08 0.25 2019-05-08 2019-05-19
3 184.00000000 0.08 null 2019-05-19 2019-06-05
3 200.00000000 null null 2019-06-05 2019-09-06
3 184.00000000 null 0.08 2019-09-06 2019-09-09
3 200.00000000 null null 2019-09-09 null