我有桌子…
ProjectID UserID RoleID 101 1 10 101 2 10 102 2 10 102 3 10 103 1 10
当前只有一种类型的角色,即角色“ 10”,但我想添加一个新角色,即角色“ 11”,它将作为主角。因此,凡是具有“ 10”角色的用户的项目,都应具有领导作用。被选择为潜在客户的用户将基于优先级列表,在本示例中,我们将顺序定为1、2、3。
预期结果…
ProjectID UserID RoleID 101 1 11 101 2 10 102 2 11 102 3 10 103 1 11
您可以使用来确定哪个用户具有最高优先级row_number()。SQL Server让您以可更新的CTE进行此操作,因此查询如下所示:
row_number()
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;