2016-09-21 57 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