我有一张如下所示的表格。在当前行中填充前一行的值Oracle视图
现在我想要一个视图,其中对于每一行,列START_DATE
中的值应该是前一行的END_DATE
中的值。 (忽略创建视图的第一行,我将用垃圾值或空值填充)。
请提出任何建议。提前
我有一张如下所示的表格。在当前行中填充前一行的值Oracle视图
现在我想要一个视图,其中对于每一行,列START_DATE
中的值应该是前一行的END_DATE
中的值。 (忽略创建视图的第一行,我将用垃圾值或空值填充)。
请提出任何建议。提前
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;
嗨..结束日期是表格中的列...我想在我的视图中列开始日期 –
@VinodChelladurai:然后只需交换名称。 –
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
请张贴表定义和样本数据文字,而不是图像。理想情况下包含一个http :: //sqlfiddle.com示例。 –
对不起,我虽然图像将清楚解释。 –
查看LAG函数 – Randy