我认为是可以用一句sql来实现的,不过你提供的条件少了些,累计缴费本息的定义是什么?

解决方案 »

  1.   

    可以用一句SQL实现,不过需要借助函数,而且是递归函数,根据输入的年分得到历年缴费额。
      

  2.   

    你是要用一句sql语句插入一条记录,还是插入所有记录?
      

  3.   

    用分折函数实现此功能。如:
    SQL> select id from aa;ID
    --
    1
    2
    3
    4
    5
    6
    6
    SQL> select id,sum(id) over(order by id) from aa;ID SUM(ID)OVER(ORDERBYID)
    -- ----------------------
    1                       1
    2                       3
    3                       6
    4                      10
    5                      15
    6                      27
    6                      27以下暂不统计历年缴费额与利息2,明天续答.select a.年份,本年缴费额,本年缴费额×本年利率×1.083×0.5  利息1,sum(本年缴费额+本年缴费额×本年利率×1.083×0.5) over(order by 年份) 累计缴费本息,b.年利率
    from 缴费记录表 a,利率表 b
    where a.缴费年份=b.年份
    order by 年份
      

  4.   

    over函数在Oracle8.0里面有吗?好像没有也。
      

  5.   

    用Oracle8.1.6以后版本的分析函数可解决此问题,先前的版本很麻烦,几乎做不出。
      

  6.   

    select 缴费记录表.缴费年份,
    本年缴费额,
    本年缴费额×年利率×1.083×0.5 利息1,
    LAG(累计缴费本息,1,NULL) OVER (ORDER BY 缴费记录表.缴费年份) 历年缴费额,
    历年缴费额×年利率 利息2,
    本年缴费额+利息1+历年缴费额+利息2 累计缴费本息,
    年利率
     from 缴费记录表,利率表 
     where 缴费记录表.缴费年份=利率表.年份
     order by 缴费记录表.缴费年份
      

  7.   

    可是我还是解决不了啊。我们系统用的ORACLE8.05。没办法。
      

  8.   

    只好给Oralce升级了。
    先exp80你库中的数据,升级后再imp倒至新建的系统中,
    才能实现你的算法。
    (升级时最好请熟练的oracle工程师来做,因为要兼容以前的数据要慎重。)