Oracle 算出来的数据 0省去了 求原因

小小崔同学 2019-09-06 03:03:16

SELECT decode(b.计划趟次, 0, 0, round(a.完成车次 / b.计划趟次, 4))车次完成率
from (select sum(fd.seqnum) 完成车次
from FDISDISPLANLD fd
where fd.routeid = '80001'
and fd.isactive = 1
and (fd.isconfirm = 1 or fd.recstate in (5, 24, 10))
and fd.rectype = '1'
and fd.rundate = trunc(sysdate)) a,
(select sum((f.overtime - f.begintime) * 24 * 60 / intervaltime) + 1 计划趟次,
f.rundate
from fdisdispatchinterval f
where exists (select 1
from mcsegmentinfogs
where segmentid = f.segmentid
and rundirection = '1')
and f.routeid = '80001'
and f.rundate = trunc(sysdate)
) b



这段sql的执行结果是 0.5









SELECT decode(b.计划趟次, '0', '0', round(a.完成车次 / b.计划趟次, 4))车次完成率
from (select sum(fd.seqnum) 完成车次
from FDISDISPLANLD fd
where fd.routeid = '80001'
and fd.isactive = 1
and (fd.isconfirm = 1 or fd.recstate in (5, 24, 10))
and fd.rectype = '1'
and fd.rundate = trunc(sysdate)) a,
(select sum((f.overtime - f.begintime) * 24 * 60 / intervaltime) + 1 计划趟次,
f.rundate
from fdisdispatchinterval f
where exists (select 1
from mcsegmentinfogs
where segmentid = f.segmentid
and rundirection = '1')
and f.routeid = '80001'
and f.rundate = trunc(sysdate)
) b


这段sql 的执行结果是.5 他俩的区别是第一个0每家单引号,第二个加了单引号 求oracle大佬 告诉我这是什么原因
...全文
124 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小崔同学 2019-09-07
  • 打赏
  • 举报
回复
对的
minsic78 2019-09-06
  • 打赏
  • 举报
回复
说明第一个结果是字符串,第二个结果是数字。。。
小小崔同学 2019-09-06
  • 打赏
  • 举报
回复
嗯呢?不是吧
AHUA1001 2019-09-06
  • 打赏
  • 举报
回复
如果我要是没猜错,“计划趟次”字段应该是数字类型的,并且是索引。加了引号,导致不走索引,所以执行效率下降。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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