我的表中的某些记录缺少START_DATE和END_DATE值,现在我正在尝试使用SQL来更新它们,如下所示:
更新前
更新后
按TYPE列分组并按END_DATE列排序,当B1的START_DATE和A1的END_DATE均为NULL时,它们应该由B1的END_DATE值填充。
START_DATE从B1:FIRST_VALUE(START_DATE)超过(按ID ASC排序的类型)
END_DATE from A1:LAST_VALUE(END_DATE)OVER(按ID DESC排序按类型排序)
但是,我无法弄清楚如何使用SQL或PL / SQL来实现上述任务。请帮助提供完成任务的方法。
答案 0 :(得分:2)
如果您的序列始终相同,那么这将正常工作。您必须运行2个更新语句。尝试运行它们而不提交数据,看看你是否得到了你想要的东西。
update mytable t
set start_date = (select end_date from mytable aa where aa.id=t.id)
where start_date is null;
update mytable t
set end_date = (select end_date from mytable aa where aa.id=t.id+1)
where end_date is null;