Курсор: максимальное целое значение остается в строках, а другие значения становятся равными нулю в предыдущих строках - PullRequest
0 голосов
/ 03 мая 2020

У меня есть следующая таблица:

myTable t1

 ID   RENT
 ----------
 10   2000
 10   5000
 10   7000
 10   1000
 10    500

, и я хочу обновить все значения в АРЕНДУ с целочисленным значением «0», за исключением того, что максимальное значение арендной платы остается «» 7000 'Так что мой стол будет выглядеть следующим образом:

 ID   RENT
 ----------
 10      0
 10      0
 10   7000
 10      0
 10      0

Пожалуйста, кто-нибудь может мне помочь с этим, мне сказали сделать это с помощью курсора

1 Ответ

1 голос
/ 03 мая 2020

Вы можете использовать оконные функции и обновляемый CTE:

with toudpate as (
      select t.*, max(rent) over (partition by id) as max_rent
      from t
     )
update toupdate
    set rent = 0
    where rent < max_rent;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...