2015-02-25 4 views
0

У меня есть запрос, который возвращает некоторый старый MemberShipIDsОбновление каждой строки для каждого соответствующего выбора

select cst.MembershipID from Contestant cst 
inner join User usr on usr.ID = cst.ID and usr.TypeOfUser = 0 
order by usr.CreatedOn 

И у меня есть еще один запрос, который будет возвращать некоторые новые обновленные MemberShipIDs

select 
'CON' + '-' + convert(nvarchar(255), 
ROW_NUMBER() over(order by CreatedOn)) + '-' 
+ Right(Year(usr.CreatedOn),2) 
from Contestant cst 
inner join [dbo].[User] usr on usr.ID = cst.ID and usr.TypeOfUser = 0 

Теперь я хочу обновления старое значение MemberShipID с новым значением MemberShipID для каждого соответствия

+0

Пожалуйста, помечать вопрос с базой данных, которую вы используете. –

+0

, пожалуйста, добавьте свои столы и желаемый результат –

ответ

0

Вы ca n использовать join в update. Это позволяет вычислить новое значение в подзапроса или КТР и назначить его в update:

update cst 
    set MembershipId = newval.newMembershipId 
from Contestant cst join 
    (select cst.MembershipID, 
      'CON' + '-' + convert(nvarchar(255), ROW_NUMBER() over(order by CreatedOn)) + '-' + Right(Year(usr.CreatedOn),2) as newMembershipId 
     from Contestant cst inner join 
      [dbo].[User] usr 
      on usr.ID = cst.ID and usr.TypeOfUser = 0 
    ) newval 
     on cst.MembershipID = newval.MembershipID; 
+0

действительно приятно !!!! ... спасибо :) –

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