填充空列的值基于另一列的先前值
问题描述:
--------------------------------------
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。这是上一行的结束日期值。填充空列的值基于另一列的先前值
在此先感谢。
答
如果您打算在前面一行是让最后一排的结束日期排序为来到代码,你可以使用:
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
如何获得最大结束日期并设置? – 2013-03-05 04:07:28
是否要填充表格,或填充选择查询中的列? – AndrewP 2013-03-05 04:25:45
当你说“前一行”时,你暗示有一个数据订单。你是用'End Date'还是'Start DT'或其他列来订购? – Wolf 2013-03-05 04:39:16