填充当前行Oracle视图中上一行的值

时间:2014-01-29 14:40:17

标签: sql oracle

我有一张如下表格。

现在我想要一个视图,对于每一行,列START_DATE中的值应该是前一行END_DATE中的值。 (单独忽略第1行以创建视图,我将使用垃圾值或空值填充)。

请提出任何建议。提前致谢

enter image description here

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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