我有张桌子..。
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
发布于 2014-09-02 14:59:23
通过使用row_number()
,您可以确定哪个用户具有最高优先级。Server让我们在可更新的CTE中执行此操作,因此查询如下:
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;
https://stackoverflow.com/questions/25626401
复制相似问题