Запустить оконную функцию dens_rank () в запросе на обновление - Oracle - PullRequest
0 голосов
/ 02 июня 2019

У меня следующий запрос:

SELECT t.*, 
  DENSE_RANK() OVER(PARTITION BY u_a_id, column_name ORDER BY line_num, e_id) AS new_seq_id
FROM tab t;

У меня есть столбец my_seq с new_seq_id, и мне нужно обновить его.Есть ли способ в Oracle использовать вышеупомянутое в запросе на обновление?

1 Ответ

1 голос
/ 02 июня 2019

Вы можете использовать merge:

merge into t using
      (select t.*,
              row_number() over (partition by s.u_a_id, column_name order by line_num, e_id) as new_seq_id
       from t
      ) s
      on s.u_a_id = t.u_a_id and s.column_name = st.column_name
when matched then update
    set t.my_seq = s.new_my_seq;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...