Обновить столбец таблицы с помощью ROW_NUMBER - PullRequest
0 голосов
/ 06 февраля 2020

Я новичок в Oracle Мне нужно обновить столбец таблицы с помощью ROW_NUMBER() в oracle

, т. Е.

UPDATE tablefull
SET newcolumn=ROW_NUMBER() OVER (PARTITION BY columnid ORDER BY datecolumn)-1

Поскольку функция Window не разрешена В обновлении я попытался соединить таблицу с подзапросом той же таблицы и выполнить обновление

update a
set a.newcolumn= b.upnum
from tablefull a
INNER JOIN (SELECT columnid,ROW_NUMBER() OVER (PARTITION BY columnid ORDER BY datecolumn)-1 AS upnum 
FROM tablefull) b ON b.columnid=a.columnid

Поскольку объединение и обновление также невозможно в oracle, вышеприведенное также не сработало

Пожалуйста, кто-нибудь поможет мне в обновлении нового столбца таблицы с ROW_NUMBER() OVER (PARTITION BY columnid ORDER BY datecolumn)-1 в Oracle

1 Ответ

2 голосов
/ 06 февраля 2020

Поместите этот запрос с row_number в качестве исходной таблицы оператора merge:

merge into tablefull tgt
using (select rowid rwd, columnid, 
              row_number() over (partition by columnid order by datecolumn) - 1 rn
         from tablefull) src
on (src.rwd = tgt.rowid and tgt.columnid = src.columnid)
when matched then update set newcolumn = rn;

dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...