2016-09-21 58 views
1

视图我有一个周期表是这样的:创建多行条件

Value Name Month 

10 P00006 201412 
20 P00006 201501 
30 P00006 201502 
100 P00007 201509 
200 P00007 201510 
300 P00007 201511 

我想创建基于此表,其中每个名称我总结了前几个月的值的视图。 这种预期的结果:

AccruedValue Name Month 

10 P00006 201412 
30 P00006 201501 
60 P00006 201502 
100 P00007 201509 
300 P00007 201510 
600 P00007 201511 

我不知道这个可以不用使用光标所以任何帮助将不胜感激来实现。

回答

2

测试数据:

create table cycles 
(value NUMBER, name VARCHAR2(250), month VARCHAR2(250)); 
/
INSERT INTO cycles VALUES(10 , 'P00006','201412'); 
INSERT INTO cycles VALUES(20 , 'P00006','201501'); 
INSERT INTO cycles VALUES(30 , 'P00006','201502'); 
INSERT INTO cycles VALUES(100 , 'P00007','201509'); 
INSERT INTO cycles VALUES(200 , 'P00007','201510'); 
INSERT INTO cycles VALUES(300 , 'P00007','201511'); 

查看my_view:

create or replace view my_view as 
select 
    sum(value) over (partition by name order by month) as AccruedValue , 
    name , 
    month 
from cycles; 

结果:

select * from v; 

10 P00006 201412 
30 P00006 201501 
60 P00006 201502 
100 P00007 201509 
300 P00007 201510 
600 P00007 201511 
+0

视图返回精确相同的结果告诉你在你的问题 – schurik

+0

借口预期的结果我你是对的:)。非常感谢您的帮助。本主题已关闭 – saad0n87