select 
       b.yun_id,
       b.yun_yaerm,
       b.amount,
       b.yun_name, 
       b.HB,
       b.tb,
       c.amount,
       c.yun_yaerm , 
       nvl( round((c.amount -b.amount)/b.amount,2),0),
       d.amount,
       d.yun_yaerm,
       nvl( round((d.amount -b.amount)/b.amount,2),0)
  from lichengyun  b  
  left join 
   lichengyun c on 
  to_date(b.yun_yaerm,'yyyy-mm-dd') = add_months(to_date (c.yun_yaerm ,'yyyy-mm-dd') ,-1) 
  left join 
  lichengyun d on 
   to_date(b.yun_yaerm,'yyyy-mm-dd') = add_months(to_date (d.yun_yaerm ,'yyyy-mm-dd') ,-12)