2014-01-29 80 views
-1

我有一張如下所示的表格。在當前行中填充前一行的值Oracle視圖

現在我想要一個視圖,其中對於每一行,列START_DATE中的值應該是前一行的END_DATE中的值。 (忽略創建視圖的第一行,我將用垃圾值或空值填充)。

請提出任何建議。提前

enter image description here

+0

請張貼表定義和樣本數據文字,而不是圖像。理想情況下包含一個http :: //sqlfiddle.com示例。 –

+0

對不起,我雖然圖像將清楚解釋。 –

+0

查看LAG函數 – Randy

回答

3
select value1, 
     lag(end_date) over (order by end_date) as start_date, 
     end_date 
from the_table; 

如果沒有「上一個」行(基於由order by定義的排序順序)感謝那麼lag()函數返回NULL

如果你不希望NULL值,但別的東西來代替在第一行,你可以提供的功能lag()默認值:

select value1, 
     lag(end_date,1, DATE '2014-01-01') over (order by end_date) as start_date, 
     end_date 
from the_table; 
+0

嗨..結束日期是表格中的列...我想在我的視圖中列開始日期 –

+0

@VinodChelladurai:然後只需交換名稱。 –

0
SELECT t.ID, t.EndDate, Max(s.EndDate) as StartDate 
FROM TableName t 
    LEFT JOIN TableName s ON t.EndDate> s.EndDate 
GROUP BY t.ID, t.EndDate 
相關問題