sql >> Databáze >  >> RDS >> Sqlserver

Aktualizace s více podmínkami. SQL 2008

Pomocí row_number() můžete zjistit, který uživatel má nejvyšší prioritu . SQL Server vám to umožní v aktualizovatelném CTE, takže dotaz vypadá takto:

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;



  1. Visual Studio:ContextSwitchDeadlock

  2. Hibernate + MySQL:Jak nastavit kódování utf-8 pro databázi a tabulky

  3. Oracle.ManagedDataAccess nerozkládá alias v připojovacím řetězci

  4. Envers + MYSQL + List<String> =SQLSyntaxErrorException:Zadaný klíč byl příliš dlouhý;