首先建表:
create table test(
strdate varchar2(8),
indexzdf number,
indexprice number
); 插入数据后,表中数据为:
STRDATE INDEXZDF INDEXPRICE
----------------------------
20080321 0 1000
20080324 -4.5514699
20080325 1.65243499
20080326 -0.1487968
20080327 -5.0357180
20080328 2.97210729
20080331 -4.0724884
20080401 -6.6299527
20080402 -1.5251111
20080403 3.85765855
20080407 4.80564031
20080408 1.04766019
20080409 -4.3915539 现在需要做的是求出首记录之外的INDEXPRICE,其他日期的INDEXPRICE是根据当日INDEXZDF和前一日INDEXPRICE推算出来的,举例说明,如计算20080324对应的INDEXPRICE,则INDEXPRICE = (-4.5514699 / 100+1)* 1000 其中:-4.5514699是20080324当天的INDEXZDF,而1000是前一日的INDEXPRICE;
计算好每一日的INDEXPRICE后再插入表中,请高手帮忙解决下,先谢谢拉^_^
create table test(
strdate varchar2(8),
indexzdf number,
indexprice number
); 插入数据后,表中数据为:
STRDATE INDEXZDF INDEXPRICE
----------------------------
20080321 0 1000
20080324 -4.5514699
20080325 1.65243499
20080326 -0.1487968
20080327 -5.0357180
20080328 2.97210729
20080331 -4.0724884
20080401 -6.6299527
20080402 -1.5251111
20080403 3.85765855
20080407 4.80564031
20080408 1.04766019
20080409 -4.3915539 现在需要做的是求出首记录之外的INDEXPRICE,其他日期的INDEXPRICE是根据当日INDEXZDF和前一日INDEXPRICE推算出来的,举例说明,如计算20080324对应的INDEXPRICE,则INDEXPRICE = (-4.5514699 / 100+1)* 1000 其中:-4.5514699是20080324当天的INDEXZDF,而1000是前一日的INDEXPRICE;
计算好每一日的INDEXPRICE后再插入表中,请高手帮忙解决下,先谢谢拉^_^
解决方案 »
- pl/sql developer登录后,执行没有响应。 [复制链接]
- 关于Datagrid标题显示问题
- 创建JOB时候遇到的问题,以前从未遇到
- 在服务里启动不了OracleDBConsoleorcl
- sqlplus 中使用set serveroutput on 的问题
- conn / as sysdba是使用的sys用户吧,能不能加个密码才能连接呢?
- 如何提供delete的效率
- 高手,用sql语句如何找出数据库中某字段中所有相同的记录
- oracle找出 当前节点的最高祖先
- win10 安装oracle 11g异常,点击universal Installer出现闪退?
- 急,求助DECODE语句的多值判断,请高手指点!
- 如何让orcle10g安装不与IP挂钩
-------- ---------- ----------
20080321 0 1000
20080324 -4.5514699
20080325 1.65243499
20080326 -1.652435
20080327 .65243499
20080328 1.65243499
20080401 3.65243499
20080403 4.65243499
20080406 -4.652435
20080407 -2.652435
20080411 2.65243499
20080413 3.65243499
20080415 .65243499已选择13行。SQL> edit
已写入 file afiedt.buf 1 declare
2 price number;
3 begin
4 select INDEXPRICE into price from test
5 where STRDATE=(select max(STRDATE) from test where INDEXPRICE is not null);
6 for x in (select * from test where INDEXPRICE is null order by strdate asc) loop
7 update test set INDEXPRICE=(x.indexzdf/100+1)*price where strdate=x.strdate;
8 price:=(x.indexzdf/100+1)*price;
9 end loop;
10* end;
SQL> /PL/SQL 过程已成功完成。SQL> select * from test;STRDATE INDEXZDF INDEXPRICE
-------- ---------- ----------
20080326 -1.652435 954.224675
20080327 .65243499 960.45037
20080328 1.65243499 976.321188
20080403 4.65243499 1059.06243
20080406 -4.652435 1009.79024
20080321 0 1000
20080324 -4.5514699 954.485301
20080325 1.65243499 970.25755
20080401 3.65243499 1011.98069
20080407 -2.652435 983.006208
20080411 2.65243499 1009.07981
20080413 3.65243499 1045.93579
20080415 .65243499 1052.75984已选择13行。SQL>