请教两个表交叉求和的问题!!!相当于在时间轴上求和

llaabb 2006-01-23 03:25:57
请教高手两个表交叉求和的问题,以下能不能只用一个SQL语句完成,结果其实就相当于在两根时间轴上求交集的和,但是用sql语句的话能用一个语句实现吗?
谢谢了!!!
table 1:
name: test1
value\field eff_date disc_date price
2005-5-1 2005-10-1 100
2005-10-2 2005-12-31 150
2006-1-1 2006-7-1 200
2006-7-2 2006-12-30 250
2006-12-31 2008-12-31 300
table 2:
name: test2
value\field eff_date disc_date price
2005-5-10 2005-6-1 500
2005-6-2 2005-9-1 600
2005-9-2 2005-11-30 700
2005-11-31 2006-2-1 800
2006-2-2 2006-4-1 900
2006-4-2 2006-7-1 1000
2006-7-2 2008-12-31 1100

求和的结果是:test1+test2
value\field eff_date disc_date price
2005-5-1 2005-5-10 100+0=100
2005-5-10 2005-6-1 100+500=500
2005-6-2 2005-9-1 100+600=700
2005-9-2 2005-10-1 100+700=800
2005-10-2 2005-11-30 150+700=850
2005-11-31 2005-12-31 150+800=950
2006-1-1 2006-2-1 200+800=1000
2006-2-1 2006-4-1 200+900=1100
2006-4-2 2006-7-1 200+1000=1200
2006-7-2 2006-12-30 250+1100=1350
2006-12-31 2008-12-31 300+1100=1400
...全文
156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugchen888 2006-01-23
  • 打赏
  • 举报
回复
难啊
Renkey 2006-01-23
  • 打赏
  • 举报
回复
用pro*c好了。
SInoyew 2006-01-23
  • 打赏
  • 举报
回复
方法是对的。
cenlmmx 2006-01-23
  • 打赏
  • 举报
回复
还是没对,仔细看了看,有点麻烦,也没测试环境,等高人吧
cenlmmx 2006-01-23
  • 打赏
  • 举报
回复
不好意思,看错了
select value, eff_date, price
from
(select r.value, r.eff_date, sum(r.price) price
rank() () (partition by r.value order by r.eff_date) x from
(
select * from test1
union
select * from test2
) r )
cenlmmx 2006-01-23
  • 打赏
  • 举报
回复
select * from test1
union
select * from test2

17,078

社区成员

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

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