Sorry
It is here
data table1;
length
product $ 1
st_date end_date 8
price 8
;
informat st_date end_date date.;
format st_date end_date date9.;
input product st_date end_date price;
datalines;
A 01-Jan-18 06-Jan-18 10
B 09-Feb-18 14-Feb-18 20
C 06-May-18 11-May-18 30
D 11-Jun-18 16-Jun-18 15
;
run;
data table2;
length
product $ 1
override_date 8
price 8
;
informat override_date date.;
format override_date date9.;
input product override_date price;
datalines;
A 03-Jan-18 12
B 09-Feb-18 18
D 17-Jun-18 23
;
run;
data temp;
set table1;
n+1;
do date=st_date to end_date;
output;
end;
format date date9.;
drop st_date end_date;
run;
data temp1;
merge temp table2(in=inb rename=(price=_price override_date=date));
by product date;
in_b=inb;
run;
data temp2;
set temp1;
if n ne lag(n) or in_b then group+1;
run;
proc sql;
create table want as
select group,max(Product) as Product,
min(date) as st_date format=date9.,
max(date) as end_date format=date9.,
coalesce(max(_price),max(price)) as Price
from temp2
group by group;
quit;
Hi,
Thanks, this answer also worked for me. But i could have select only one answer as solution so I accepted the first one. But this answer work fine for me. Thanks.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.