2016-01-12 8 views
0

Мне нравится обновлять каждую строку с добавленным значением на основе условия where.столбец обновления с добавочным значением на основе каждого предложения where

ехр: выберите ClientId из [Документ] Где ClientId 10 Показывает 3 результата, то мне нужно обновить каждый matterID с 1 до 3.

1 ClientId имеет один или несколько MatterID так нужно обновлять каждый matterID на основе по количеству элементов для каждого клиента. Если клиент 10 имеет 3 значенияID, тогда значение идентификатора материи будет 1 - 2 - 3

Нет: оно не обновляется правильно. Я получаю значения для этого примера, число ramdom не 1-39-39.

хранимых процедур

Alter PROCEDURE dbo.CustomIdProcedure 
    @clientId varchar(255) = '' 
    AS 

    Begin   
      update e set MatterId = rn from (select * ,rn=row_number() over (order by id) from [Document] where ClientId = @clientId) e 
    END 

**

Для запуска процедуры

** EXEC CustomIdProcedure (выберите ClientId из [Документ] Где ClientId < > '')

ответ

0

Вы можете использовать подзапрос или обновляемый КТР для этого:

with toupdate as (
     select d.*, 
      row_number() over (partition by clientid order by id) as rn 
     from [Document] d 
     where ClientId = @clientid 
    ) 
update toupdate 
    set MatterId = rn; 
+0

Как вы пройти @clientid – user2577665

+0

мне нужно пройти ClientId также для каждого результата один ClientId имеет один или много matterID – user2577665

+0

@ user2577665. , , Это будет запрос внутри хранимой процедуры. –

Смежные вопросы