我有一张如下表格。
现在我想要一个视图,对于每一行,列START_DATE
中的值应该是前一行END_DATE
中的值。 (单独忽略第1行以创建视图,我将使用垃圾值或空值填充)。
请提出任何建议。提前致谢
答案 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