按组更新记录

时间:2015-09-23 11:52:27

标签: sql oracle

我的表中的某些记录缺少START_DATE和END_DATE值,现在我正在尝试使用SQL来更新它们,如下所示:

更新前

enter image description here

更新后

enter image description here

按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来实现上述任务。请帮助提供完成任务的方法。

1 个答案:

答案 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;