Oracle:如何用SQL将截图结果呈现出来

SYYDI 2018-03-08 02:35:23


左边数据完整,右边只有第一条数据,需要生成其余数据,可以用SQL写出来吗?
...全文
771 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
SYYDI 2018-03-15
  • 打赏
  • 举报
回复
虽然差异很小,但是累积起来差异会越来越大,所以还是要弄清楚一点好~
SYYDI 2018-03-15
  • 打赏
  • 举报
回复
这么算结果确实是一样的,那这是什么原因导致的呢?是在取第二列的数的时候没取到那么多位吗?
zbdzjx 2018-03-15
  • 打赏
  • 举报
回复
再执行 with t1 as ( select 1 id, null c1, 0.170495255 c2 from dual union all select 2 id, -0.000999861061490215 c1, null from dual ) select id, c1, c2 , case when id=1 then c2 else (exp(sum(ln((1+nvl(c1, 0))*(1+nvl(c2,0)))) over(order by id)))-1 end from t1 看看结果是多少。
zbdzjx 2018-03-15
  • 打赏
  • 举报
回复
引用 8 楼 SYYDI 的回复:
[quote=引用 7 楼 zbdzjx 的回复:] [quote=引用 5 楼 SYYDI 的回复:] [quote=引用 3 楼 zbdzjx 的回复:] 这样?
with t1 as
(
select 1 id, null c1, 18.97/100 c2 from dual
union all
select 2 id, 0.04/100 c1, null from dual
union all
select 3 id, 0.02/100 c1, null from dual
union all
select 4 id, 0.02/100 c1, null from dual
union all
select 5 id, -0.02/100 c1, null from dual
union all
select 6 id, 0.02/100 c1, null from dual
)
select id, c1, c2
, case when id=1 then c2 else (exp(sum(ln((1+nvl(c1, 0))*(1+nvl(c2,0)))) over(order by id)))-1 end 
from t1
结果和我用EXCEL算出来有微小差异[/quote] 我试了,如果小数点后位数够多,结果是一样的。[/quote] 不一样,我把小数位全带进去算了截图如下, 图一为准确结果: 图二为SQL计算结果 大神,帮忙再看看,这语句属实有点看不明白,感谢! [/quote] 就拿第二行举例子: select (1+0.170495255)*(1-0.000999861061490215)-1 from dual 你看一下结果是多少,在计算器中也计算一下,看看结果是多少。
SYYDI 2018-03-15
  • 打赏
  • 举报
回复
引用 7 楼 zbdzjx 的回复:
[quote=引用 5 楼 SYYDI 的回复:]
[quote=引用 3 楼 zbdzjx 的回复:]
这样?
with t1 as
(
select 1 id, null c1, 18.97/100 c2 from dual
union all
select 2 id, 0.04/100 c1, null from dual
union all
select 3 id, 0.02/100 c1, null from dual
union all
select 4 id, 0.02/100 c1, null from dual
union all
select 5 id, -0.02/100 c1, null from dual
union all
select 6 id, 0.02/100 c1, null from dual
)
select id, c1, c2
, case when id=1 then c2 else (exp(sum(ln((1+nvl(c1, 0))*(1+nvl(c2,0)))) over(order by id)))-1 end
from t1


结果和我用EXCEL算出来有微小差异[/quote]
我试了,如果小数点后位数够多,结果是一样的。[/quote]

不一样,我把小数位全带进去算了截图如下,
图一为准确结果:

图二为SQL计算结果


大神,帮忙再看看,这语句属实有点看不明白,感谢!
zbdzjx 2018-03-09
  • 打赏
  • 举报
回复
引用 5 楼 SYYDI 的回复:
[quote=引用 3 楼 zbdzjx 的回复:] 这样?
with t1 as
(
select 1 id, null c1, 18.97/100 c2 from dual
union all
select 2 id, 0.04/100 c1, null from dual
union all
select 3 id, 0.02/100 c1, null from dual
union all
select 4 id, 0.02/100 c1, null from dual
union all
select 5 id, -0.02/100 c1, null from dual
union all
select 6 id, 0.02/100 c1, null from dual
)
select id, c1, c2
, case when id=1 then c2 else (exp(sum(ln((1+nvl(c1, 0))*(1+nvl(c2,0)))) over(order by id)))-1 end 
from t1
结果和我用EXCEL算出来有微小差异[/quote] 我试了,如果小数点后位数够多,结果是一样的。
  • 打赏
  • 举报
回复
没看懂。。。
SYYDI 2018-03-08
  • 打赏
  • 举报
回复
引用 3 楼 zbdzjx 的回复:
这样?
with t1 as
(
select 1 id, null c1, 18.97/100 c2 from dual
union all
select 2 id, 0.04/100 c1, null from dual
union all
select 3 id, 0.02/100 c1, null from dual
union all
select 4 id, 0.02/100 c1, null from dual
union all
select 5 id, -0.02/100 c1, null from dual
union all
select 6 id, 0.02/100 c1, null from dual
)
select id, c1, c2
, case when id=1 then c2 else (exp(sum(ln((1+nvl(c1, 0))*(1+nvl(c2,0)))) over(order by id)))-1 end 
from t1
结果和我用EXCEL算出来有微小差异
SYYDI 2018-03-08
  • 打赏
  • 举报
回复
补充描述一下,可以这么理解,现在有表 Temp,数据截图如下,左边列假定为A列,右边列为B列,A列数据是完整的,B列数据只有一个初始值,
现在想要把B列剩下的值计算出来公式为发帖所贴的截图
zbdzjx 2018-03-08
  • 打赏
  • 举报
回复
这样?
with t1 as
(
select 1 id, null c1, 18.97/100 c2 from dual
union all
select 2 id, 0.04/100 c1, null from dual
union all
select 3 id, 0.02/100 c1, null from dual
union all
select 4 id, 0.02/100 c1, null from dual
union all
select 5 id, -0.02/100 c1, null from dual
union all
select 6 id, 0.02/100 c1, null from dual
)
select id, c1, c2
, case when id=1 then c2 else (exp(sum(ln((1+nvl(c1, 0))*(1+nvl(c2,0)))) over(order by id)))-1 end 
from t1
卖水果的net 2018-03-08
  • 打赏
  • 举报
回复
源数据长什么样? 规则是什么样? 结果是什么样? 都说一下
  • 打赏
  • 举报
回复
什么数据关系得你找出来吧
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle Database 11g初学者指南 基本信息 原书名: Oracle Database 11g, A Beginner's Guide 原出版社: McGraw-Hill Osborne Media 作者: (美)Ian Abramson    Michael Abbey    Michael Corey 译者: 窦朝晖 出版社:清华大学出版社 ISBN:9787302218937 上架时间:2010-2-20 出版日期:2010 年1月 开本:16开 页码:288 版次:1-1 内容简介   本书能使读者快捷地掌握oracle database 11g的基础知识。通过自我评估教程,介绍了核心数据库技术、管理员职责、高可用性以及大型数据库特性。本书带领读者循序渐进地学习数据库设置、管理、编程、备份和恢复。还深入介绍了sql和pl/sql。为了易于学习,这本独特的oracle press指南是这样组织的:    ·核心概念——oracle database 11g主题呈现在按逻辑组织的章节中    ·主要内容——每章要介绍的具体内容列表    ·实践练习——演示如何应用在每章学到的关键技术    ·学习效果测试——对学习效果的快速自我评估    ·注意——与所介绍主题相关的额外信息    ·章节测验——每章结束时的测验测试读者对所学知识的掌握程度 作译者 作者   Ian Abramson是IOUG(Independent Oracle Users Group)现任总裁,现居加拿大多伦多,他是业界资深技术顾问,为电信、CRM、公用事业和其他行业的客户提供实现方案的专业指导。他的关注方向包括Oracle产品集,以及其他前沿技术和这些技术在优化数据仓库设计和部署的应用。他还是各种技术会议的主讲人,包括COLLABORATE、Oracle OpenWorld和其他地方与区域会议。   Michael Abbey是公认的数据库管理、安装、开发、应用迁移、性能调优和实现方面的权威。在过去的14年中,他与IanAbramson和MichaelCorey为OraclePress合著了一系列图书.Abbey在国际Oracle用户团体非常活跃,经常出席COLLABORATE、OraclecOpenWorld和区域性用户组会议.   Michael J.Corey是Ntirety(ThecDatabasecAdministrationcExperts)的创始人和CEO.Michael的数据库情结可追溯到Oraclec3.0.Michael是IOUG(www.ioug.org)的前总裁和早期的Oraclec Press作者.他经常在世界各地的商业和技术会议上进行学术交流.他的博客是http://michaelcorey.ntirety.com   Michelle Malcher是一名高级数据库管理员,在数据库开发、设计和管理方面具有十多年经验.她是性能调优、安全、数据建模和超大型数据库环境数据库体系结构方面的专家.她是IOUG Best Practices Tip Booklet的特约作者.Michelle积极参加IOUG活动,是特殊兴趣组的负责人.在技术会议和用户组会议上她乐于展现和分享有关Oracle数据库主题的思想.她的Email是michelle_malcher@ioug.org. 目录 封面 -14 封底 -13 扉页 -12 版权 -11 关于作者 -10 前言 -8 目录 -5 第1章 数据库基础 1 1.1 数据库定义 2 1.2 Oracle Database 11g的体系结构 3 1.2.1 控制文件 4 1.2.2 联机重做日志 4 1.2.3 System表空间 4 1.2.4 Sysaux表空间 4 1.2.5 默认的临时表空间 5 1.2.6 Undo表空间 5 1.2.7 服务器参数文件 5 1.2.8 后台进程 5 1.2.9 数据库管理员 7 1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11 1.5.1 视图 12 1.5.2 触发器 12 1.5.3 过程 13 1.5.4 函数 13

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧