填充空列的值基于另一列的先前值

问题描述:

-------------------------------------- 
code  Start DT End date Status 
-------------------------------------- 
Y68 25/OCT/11 25/OCT/11 ADM_CHECKD 
Y68 25/OCT/11 25/OCT/11 SATISFIED 
Y68 25/OCT/11 25/OCT/11 SATISFIED 
Y68 25/OCT/11 31/OCT/11 SATISFIED 
Y68   SATISFIED 

我的要求是,如果最后一行的开始日期为空,它应该有值31/oct/11。这是上一行的结束日期值。填充空列的值基于另一列的先前值

在此先感谢。

+0

如何获得最大结束日期并设置? – 2013-03-05 04:07:28

+1

是否要填充表格,或填充选择查询中的列? – AndrewP 2013-03-05 04:25:45

+0

当你说“前一行”时,你暗示有一个数据订单。你是用'End Date'还是'Start DT'或其他列来订购? – Wolf 2013-03-05 04:39:16

如果您打算在前面一行是让最后一排的结束日期排序为来到代码,你可以使用:

SQL> select code, 
    2   nvl(start_dt, lag(end_dt, 1) over (partition by code order by end_dt)) start_dt, 
    3   end_dt, status 
    4 from data 
    5 order by start_dt; 

COD START_DT END_DT STATUS 
--- --------- --------- ---------- 
Y68 28-FEB-13 01-MAR-13 ADM_CHECKD 
Y68 01-MAR-13 02-MAR-13 SATISFIED 
Y68 02-MAR-13 03-MAR-13 SATISFIED 
Y68 03-MAR-13 04-MAR-13 SATISFIED 
Y68 04-MAR-13   SATISFIED 

如: http://sqlfiddle.com/#!4/abe8f/1