2014-01-29 50 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 
相关问题