Запрос на обновление данных на основе значения некоторого другого столбца в той же таблице - PullRequest
0 голосов
/ 24 января 2019

У меня есть таблица A, столбец которой

  1. id - последовательность
  2. тип
  3. группа

я хочу обновить столбец GROUP , следуя приведенной ниже логике если type = 1, тогда обновите столбец группы как постоянное значение, скажем '10', пока в следующий раз не найдет '1'. Если он найдет в следующий раз '1', обновите группу как '11' и так далее ... пожалуйста, найдите ниже пример для справки

пример

enter image description here

Может кто-нибудь помочь с запросом.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вы можете использовать коррелированный подзапрос:

update t
    set group = (select count(*) + 9
                 from t t2
                 where t2.id <= t.id and t2.type = 1
                ) ;
0 голосов
/ 24 января 2019

Вы можете использовать совокупный подход:

update a
     set group = ( 
                  with my_cte as (
                       select a.*, 
                              sum(case when type = 1 then 1 else 0 end) over (order by id) as new_group
                       from a;
                    )
                  select new_group from my_cte where a.id = my_cte.id 
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...