首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

plsql的写法

2012-02-20 
求一个plsql的写法id money rate1100100/4002300300/40033501-100/400-300/400计算rate:除了最后一条记录

求一个plsql的写法
id money rate 
1 100 100/400
2 300 300/400
3 350 1-100/400-300/400

计算rate:除了最后一条记录外,rate=money/400,最后一条记录的rate=1-(前面所有的rate和)。

[解决办法]
如果id是1,2,3顺序排列的话就这样取
select id,money,money/400 rate from t where id<=(select count(*)-1 from t)
union
select id,money,1-(select sum(rate) from (select id,money,money/400 rate from t where id<=(select count(*)-1 from t))
 ) from t
[解决办法]
修改表中的值
update t a set rate=(select money/400 from t b where a.id=b.id)
update t set rate=(select 1-sum(rate) from t where rownum<(select count(id) from t)) where id=(select max(id) from t)
[解决办法]
修改下:

探讨
如果id是1,2,3顺序排列的话就这样取
select id,money,money/400 rate from t where id <=(select count(*)-1 from t)
union
select max(id) id,money,1-(select sum(rate) from (select id,money,money/400 rate from t where id <=(select count(*)-1 from t)) rate
) from t

热点排行