请教一个SQL语句,从A表得到B的结果
A:
id datetime num
-----------------------
1 20100501 3
1 20100502 5
1 20100503 4
2 20100501 6
2 20100502 7
2 20100503 5B:
id datetime sum
-----------------------
1 20100502 8
1 20100503 12
2 20100502 13
2 20100503 18统计指定的日期之前的num的和
A:
id datetime num
-----------------------
1 20100501 3
1 20100502 5
1 20100503 4
2 20100501 6
2 20100502 7
2 20100503 5B:
id datetime sum
-----------------------
1 20100502 8
1 20100503 12
2 20100502 13
2 20100503 18统计指定的日期之前的num的和
解决方案 »
- 请教一下Oracle 时间字段为空的比较
- create index..(bsm asc) 与create index ..(bsm)的区别
- 请问ORACLE中,怎样获得两个时间相差的秒数?
- 请教关于RMAN备份问题
- procedure 的问题,编译通不过
- 请问:关于oracle有没有好的一些参考资料啊,感觉很好东西都拿不准.
- 字符集問題!
- 关于db_name的基础问题.
- pl/sql developer开发问题:不清楚pl/sql developer 都有哪些用处?它可以和那些软件结合开发程序?哪个方面有前途?
- 如何查询重复字段的行?
- oracle中用java调用webservice出错
- Oracle查询多表问题
select 1 id,to_date('20100501','yyyymmdd') datetime,3 num from dual
union all
select 1 id,to_date('20100502','yyyymmdd') datetime,5 num from dual
union all
select 1 id,to_date('20100503','yyyymmdd') datetime,4 num from dual
union all
select 2 id,to_date('20100501','yyyymmdd') datetime,6 num from dual
union all
select 2 id,to_date('20100502','yyyymmdd') datetime,7 num from dual
union all
select 2 id,to_date('20100503','yyyymmdd') datetime,5 num from dual
)
select id,datetime, sumn from(
select id,datetime,sum(num) over(partition by id order by rn) sumn,rn from(
select id,datetime,num,row_number() over(partition by id order by id) rn from temp
)) where rn != 1
id datetime sum
-----------------------
1 20100502 8
1 20100503 12
2 20100502 13
2 20100503 18
2 20100504 18
2 20100505 18
注意,20100504的记录,在A中不存在。
也就是说,我要是查询不存在的日期的时候,sum的值为前面最近日期的最大值
从20100503往后的日期是连贯的
from
(
select id,datetime,sum(num) over(partition by id order by datetime) total,
row_number() over(partition by id order by datetime) rn
from A
)
where rn!=1