本帖最后由 mkjchenjiaxin 于 2012-04-26 16:13:29 编辑

解决方案 »

  1.   

    rownum=1放括号里面去用and连接,不知道可以不
      

  2.   

    查询数据,然后在插入另外一张表。for循环时 怎么读取  下一条记录。因为下一条数据的字段 减去 当前数据的字段。
      

  3.   

    DECLARE
      jianju NUMBER(20,4) := 0;--变量
      dist number(20,4) := 0;
      
      strSql varchar2(1000) := '';
    BEGIN
      --按milestone排序后,
      FOR r  IN
      (SELECT *
        FROM tb_points
        WHERE district_name='XMQ'
        AND location_name  ='上行'
        AND pyear          ='2003'
        AND pmonth         ='04'
        ORDER BY milestone
      )
      LOOP --没有问题
      dist := jianju;
      jiangju := r.milestone;
      dist := jiangju - dist;
      --dist就是需要的两条记录之间的间距
      --这里写INSERT INTO 语句
      /*
      --例如下写法
      strSql := 'insert into tableOther (milestone) values (' || to_char(jianju) || ')'
      execute immediate strSql;
      commit;
      */  
      END LOOP;
    END;--附:如何仅仅是取与上一条记录的差值,可以直接用LAG函数写出查询结果。
      

  4.   

    select aaa into jianju  from (select milestone-r.milestone aaa  from tb_points where district_name=r.district_name and location_name=r.location_name and pyear=r.pyear and pmonth=r.pmonth and milestone > r.milestone order by milestone) where rownum=1