Обновите набор записей, используя Row_Number () и / или Cursor and Break, когда условие выполнено - SQL Server - PullRequest
0 голосов
/ 09 октября 2019

У меня есть таблица, в которой я хочу обновить столбец CID, пока он не найдет другое значение столбца, где EID = 7. Я заказал свою таблицу, используя PID в порядке DESC. Вот моя структура таблицы.

enter image description here

После обновления таблица будет выглядеть следующим образом:

enter image description here

Я, в основном, хочу переупорядочить таблицу по CID и хочу обновить верхние строки (установить CID = 1010), пока он не найдет, где EID = 10. Когда EID = 10, он не будет обновлять остальные нижеКроме того, я пытался использовать Row_Number (), потому что моя таблица содержит различное и большое количество CID плюс значение EID для каждого CID отличается, но каждый CID имеет где EID = 10. Я пытался, используя курсоры, сортировку с использованиемRow_Number (), но я не смог получить нужные данные. Любая помощь приветствуется.

1 Ответ

1 голос
/ 09 октября 2019

Вы можете использовать функцию управления окнами и вхождения в 10, а затем обновить, как показано ниже:

update t 
set t.cid = 1010 
from #table t join
( select *, sum(case when eid = 10 then 1 else 0 end) over(order by pid desc) rown from #table ) r
on t.PId = r.PId
and rown = 0

Код, как показано ниже: https://rextester.com/GUW95636

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