Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Uma atualização com várias condições. SQL 2008


Você pode descobrir qual usuário tem a prioridade mais alta usando row_number() . O SQL Server permite que você faça isso em um CTE atualizável, para que a consulta fique assim:
with toupdate as (
      select t.*,
             row_number() over (partition by projectid
                                order by (case when userid = 1 then 1
                                               when userid = 2 then 2
                                               when userid = 3 then 3
                                               else 4
                                          end
                                         )
                               ) as PriorityForLead
      from table t
     )
update toupdate
    set RoleId = 11
    where PriorityForLead = 1;