有线路表Road 如下
startStake    endStake     roadCode    roadName
22.365        88.000       G899654224   线路名称startStake,endStake为开始桩号,结束桩号,roadCode为线路编号.现在做成
startStake   endStake     roadCode     roadName
22.365       23            G899654224  线路名称
23           24            G899654224  线路名称
.....
87           88            G899654224  线路名称
也就是将开始桩号和结束桩号分成每段1KM的有小数的,向上取整.不用存储过程SQL该怎么写..请大侠们指点

解决方案 »

  1.   

    是查询还是直接更改数据表的数据?
    如果查询
    select round(startStake    + 0.5)from。
    如果更改:
    update
    set startStake =  round(startStake    + 0.5)
    。。
    应该是,你试一下
      

  2.   

    我测试是成功的,你试试看~~~
    SQL>  select * from road;STARTSTAKE   ENDSTAKE ROADCODE   ROADNAME
    ---------- ---------- ---------- --------
        22.365      30.55 G899654224 road_1  select decode(road.startStake+rn-1,road.startStake,road.startStake,FLOOR(road.startStake+rn-1)) as "Front Number",
            decode(sign(road.endStake-road.startStake-rn),1,FLOOR(road.startStake+rn),road.endStake) as "After Number",
            roadCode,
            roadName
       from road,
            (
            select rownum rn
              from all_objects,
                   road
             where rownum <= decode(CEIL(road.endStake) - FLOOR(road.startStake),road.endStake-road.startStake,road.endStake-road.startStake,CEIL(road.endStake) - FLOOR(road.startStake) +1)
                )tt
      where road.startStake+rn-1<=road.endStake;Front Number After Number ROADCODE   ROADNAME
    ------------ ------------ ---------- --------
          22.365           23 G899654224 road_1
              23           24 G899654224 road_1
              24           25 G899654224 road_1
              25           26 G899654224 road_1
              26           27 G899654224 road_1
              27           28 G899654224 road_1
              28           29 G899654224 road_1
              29           30 G899654224 road_1
              30        30.55 G899654224 road_19 rows selected
      

  3.   

    太谢谢,mantisXF(枫の叶)确实行的.请接分!!!!