1

私はSASを初めて使用し、SASプラットフォームで変換するためにしばらく立ち往生しているSQLの最新コードがあります。SASでdo..whileループも試してみましたが、うまくいきませんでした。

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;
4

1 に答える 1

1

私はこのようなことを試してみます:

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;

試していないので、うまくいくかどうかはわかりません。

于 2012-11-16T07:25:34.687 に答える