急急急高手指点

chenyonge 2010-03-29 11:06:09
现在有两个表 a 表 b 表
a 表

bao xhid th fth zq kstime jstiime
01000 1 aaaa zzzz 10
01000 2 eeee aaaa 10
01000 3 iiii eeee 30
01000 4 zzzz iiii 18

bao(varchar) xhid(int) th(varchar) fth(varchar) zq (int ) kstime(日期型) jstiime(日型期型)

表 b
bao(varchar) jstime(日期型)

bao th jstime
01000 aaaa 2010-5-1

如何通过表b 的 bao,th 和 jstime 算出 表a kstime 和jstime
zp 是天数
表a 的 kstime 和jstime 是往前推的 例如 aaaa 的 kstime 为 2010-5-1 -zq(10)=2010-4-21 jstime=2010-5-1
zzzz 的 kstime=(2010-5-1)-10-18=2010-4-3 jstime=2010-4-21
以此类推算出 iiii,eeee,的值,用一个函数或存储过程,请高手指点,先谢谢了,真的很急!!!!!!!!!!!
...全文
161 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxdtgsh 2010-03-30
  • 打赏
  • 举报
回复
需求不明确,没法写。
chenyonge 2010-03-30
  • 打赏
  • 举报
回复
可能是我表达的有问题,我认为我表达的很清楚了呢,原来大家都不明白,我再好好弄弄,先谢谢大家,不好意思
小灰狼W 2010-03-30
  • 打赏
  • 举报
回复
急的话更应该认真描述清楚需求,不要让别人把时间花在推测你的意思上
没时间的就直接略过了
with a as(
select '01000' bao, 1 xhid, 'aaaa' th, 'zzzz' fth, 10 zq from dual
union all select '01000', 2, 'eeee', 'aaaa', 10 from dual
union all select '01000', 3, 'iiii', 'eeee', 30 from dual
union all select '01000', 4, 'zzzz', 'iiii', 18 from dual),
b as(
select '01000' bao,'aaaa' th,date'2010-5-1' jstime from dual)

select bao,
xhid,
th,
fth,
jstime - days starttime,
jstime - days + zq endtime
from (select a.*,
sum(a.zq) over(partition by rownum - level order by level) days,
b.jstime
from a, b
where a.bao = b.bao
start with b.th = a.th
connect by nocycle prior a.fth = a.th
and prior a.bao = b.bao)
chenyonge 2010-03-29
  • 打赏
  • 举报
回复
就是想倒推出两个时间
ZIYEGUXING 2010-03-29
  • 打赏
  • 举报
回复
没有看懂是什么意思啊

17,086

社区成员

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

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