2015-09-23 4 views
1

Некоторые записей в моей таблице недостающие их Дата_начали и датой_окончание значения, теперь я пытаюсь использовать SQL для обновления их, как показано ниже:Обновление записей по группам

До обновления

enter image description here

После обновления

enter image description here

Группировка по столбцу типа и сортировки по столбцу END_DATE, когда START_DA TE из B1 и END_DATE из A1 равны NULL, они должны быть заполнены значением END_DATE из B1.

START_DATE с B1: FIRST_VALUE (START_DATE) НАД (PARTITION BY TYPE ORDER BY ID ASC)

END_DATE от А1: LAST_VALUE (END_DATE) НАД (PARTITION BY TYPE ORDER BY ID DESC)

Однако, Я не могу понять, как я могу использовать SQL или PL/SQL для реализации вышеуказанной задачи. Пожалуйста, помогите обеспечить способ выполнения задачи.

ответ

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; 
Смежные вопросы