Reputation: 11
I'm quite new in SAS and there is latest code in sql that I have been stucked for a while to convert it in SAS platform. I also try with do..while loop in SAS but it didn't work.
for c in (select * from risk.mv_closed_deals d) loop
for DatesToInsert in (select distinct(T1.ACTUAL_DATE) as ACTUAL_DATE from VINTAGE_MTD T1 where T1.Actual_Date>c.closed_date) loop
insert into VINTAGE_MTD (dealdate, actual_date, deal_month, mob, dealno, balance, loanamount, overduedays, status, server)
values (c.issue_date, DatesToInsert.Actual_Date, to_char(c.issue_date,'yyyy/mm'),
(to_char(DatesToInsert.actual_date,'yyyy')-to_char(c.issue_date,'yyyy'))*12 + to_char(DatesToInsert.actual_date,'mm') - to_char(c.issue_date,'mm') - 1,
c.dealno, 0, c.loanamount, 0, 0, 'B2');
end loop;
end loop;
Upvotes: 1
Views: 417
Reputation: 12089
I would try something like this:
proc sql;
create table vintage_mdt_new as
select c.issue_date as dealdate
,DatesToInsert.Actual_Date as actual_date
,put(c.issue_date, yymms.) as deal_month
,intck('month', DatesToInsert.actual_date, c.issue_date) as mob
,c.dealno as dealno
,0 as balance
,c.loanamount as loanamount
,0 as overduedays
,0 as status
,'B2' as server
from (select * from risk.mv_closed_deals) as c
,(select distinct(T1.ACTUAL_DATE) as ACTUAL_DATE
from VINTAGE_MTD T1) as DatesToInsert
where DatesToInsert.Actual_Date > c.closed_date;
quit;
proc append base=VINTAGE_MTD data=vintage_mdt_new;
Haven't tried it so I'm not sure if would work.
Upvotes: 1