急急急!!!如何在pl/sql中实现

chenyonge 2010-04-28 09:28:20
现在有两张表,
key 名称 周期(小时) 开始时间 完成时间
0_ zzzz 160 2002-1-18 2002-1-20
1_ yyyy 40 2002-1-16 2002-1-18
10_ pppp 208 2002-1-9 2002-1-10
11_ oooo 64 2002-1-14 2002-1-16
12_ nnnn 184 2002-1-9 2002-1-10
13_ mmmm 240 2002-1-13 2002-1-14
14_ llll 240 2002-1-10 2002-1-10
15_ kkkk 200 2002-1-10 2002-1-10
16_ jjjj 200 2002-1-10 2002-1-10
17_ iiii 168 2002-1-17 2002-1-20
18_ hhhh 168 2002-1-9 2002-1-10
19_ gggg 80 2002-1-16 2002-1-16
2_ xxxx 56 2002-1-15 2002-1-16
20_ ffff 208 2002-1-16 2002-1-16
21_ eeee 192 2002-1-16 2002-1-16
22_ dddd 120 2002-1-16 2002-1-16
23_ cccc 144 2002-1-16 2002-1-16
24_ bbbb 240 2002-1-16 2002-1-18
25_ aaaa 120 2002-1-21 2002-1-25
3_ wwww 64 2002-1-10 2002-1-15
4_ vvvvv 64 2002-1-16 2002-1-16
5_ uuuu 320 2002-1-9 2002-1-10
6_ tttt 56 2002-1-16 2002-1-16
7_ ssss 56 2002-1-10 2002-1-13
8_ rrrr 120 2002-1-3 2002-1-10
9_ qqqq 208 2002-1-9 2002-1-10


par key
19_ 0_
5_ 1_
8_ 2_
0_ 3_
0_ 4_
22_ 5_
23_ 6_
23_ 7_
24_ 8_
24_ 9_
24_ 10_
0_ 11_
24_ 12_
24_ 13_
24_ 14_
24_ 15_
24_ 16_
24_ 17_
24_ 18_
24_ 19_
24_ 20_
24_ 21_
25_ 22_
25_ 23_
25_ 24_
end_ 25_
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ptpa 2010-04-30
  • 打赏
  • 举报
回复
key 名称 周期(小时) 开始时间 完成时间
0_ zzzz 160 2002-1-18 2002-1-20
1_ yyyy 40 2002-1-16 2002-1-18
相同的日期间隔 周期怎么不一样
开始时间、完成时间 跟周期有关系吗?

我还是没看懂
你好歹用个两个表能对应起来的数据
gltyi99 2010-04-29
  • 打赏
  • 举报
回复
我看晕了。。。。

我觉得要是数据不是实时变动的,还是记录在表中查询比较快一些

我觉得你的需求可以通过书查询来实现

select
*
from tablename
start with
connect by

具体的自己去查询吧
coolkisses 2010-04-29
  • 打赏
  • 举报
回复
看晕了,又或者,楼主把题说的复杂了些
问题1 表里的 ID 小时 开始时间 结束时间 字段,其实已经都有了,算它干吗?
问题2 表里的值会变吗? 如果不变的话,只要达到目的,写个sql 或 prc 先全部计算一遍。以后随便你怎么查不就行了?
ssqtjffcu 2010-04-29
  • 打赏
  • 举报
回复
楼主说的100多W条记录是什么意思?是给出100W_的完成时间,然后往回算?你第一个表每条记录都已经有完成时间和开始时间,是怎样来的,不是要算出来的吗?
zjwssg 2010-04-28
  • 打赏
  • 举报
回复
真的必须这么设计才行吗
chenyonge 2010-04-28
  • 打赏
  • 举报
回复
我再重新说一遍,
有两张表,
第一个是数据表,第二个是关系表,
第二个表中的 key 为 25_ 是最高层,它的下一层是24_,23_,22,再下一层是12_~21_ 以此类推
如果给出了,表1中 25_的完成时间的话,需要根据表2中的关系,算出表1中所有行的开始时间与完成时间
例如,我给出了25_ 的完成时间为2010-4-29,那么表1中的 25_的开始时间为 (2010-4-29)-120/8=2010-4-14,那么它的下一层24_,23_,22_的完成时间就是2010-4-13(时间是往前推的) 再根据各自的周期算出各自的开始时间,再根据它们的开始时间算出 12_~21_的完成时间,还有它们的开始时间,以此类推,算出表中所有的行的开始时间和完成时间。不知道这回说明白了没有?
chenyonge 2010-04-28
  • 打赏
  • 举报
回复
可能是我没有表达清楚,par 是 key 的上层,表2中的 25_ 的下层有 22_,23_24_ 那么表1中的数据就可以根据 25_的开始时间来计算,25_ 的开始时间是2010-4-14 再根据 表1中的 22_,23_,24_的周期算出各自的完成时间与开始时间,完成时间是25_ 的结束时间的前一天,也就是 2010-4-13 开始时间就是根据周期来算了,以此来算出表1中所有的开始完成时间。不知道这回说明白没?
KingSunSha 2010-04-28
  • 打赏
  • 举报
回复
看不懂。

如果给出 25_ 的完成时间是 2010-4-29 那么第一个表中的 25_ 的开始时间就是
(2010-4-29)-120/8=2010-4-14 (这个大致可以猜出来,开始时间 = 给出的完成时间 - 小时数 / 每天8小时, 但不知道第一个表中的开始、完成时间是什么意思)
-->
以此算出所有表1中的开始时间和完成时间 (中间的逻辑呢?)

你提问题的目的是要得到回答,不是要别人猜谜语。
chenyonge 2010-04-28
  • 打赏
  • 举报
回复
你可真快,我还没说完呢,你就回复了
通过第二个表的关系,如果给出第二个表最后一个值,如何算出第一个表中的完成时间和开始时间
例如,如果给出 25_ 的完成时间是 2010-4-29 那么第一个表中的 25_ 的开始时间就是
(2010-4-29)-120/8=2010-4-14 以此算出所有表1中的开始时间和完成时间,最好要最优化的那种,因为我只是选了其中的几天条记录,实际有近100万条数据呢,是不是要写一个存储过程呢?请高人指点
dawugui 2010-04-28
  • 打赏
  • 举报
回复
然后呢?

3,491

社区成员

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

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