请教高手两个表交叉求和的问题,以下能不能只用一个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
谢谢了!!!
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
解决方案 »
- oracle windows身份验证
- 如何获得第一份DBA的工作?
- 在服务器上想创建两个数据库,然后就其中一个数据库中的表结构和数据都复制到另一个数据库中
- tns:权限被拒绝
- 关于ORA-01555 rollback_segments 请教 解决立即 送分
- 有关分组查询时 KEEP 的使用?
- 急求一条sql语句!!!!!!请各位高手进来
- 关于导入存储过程的问题
- 调用PRO*C库的C程序编译出现错误,高手指教
- JAVA或JSP语言中如何与操作系统为red hat linux 7.2数据库版本为8.1.7的服务器相连??????
- 有没有最方便的导入dbf到oracle的方法
- 通过临时表生成查询结果。多人同时访问时如何防止临时表被清空?
union
select * from test2
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 )