首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有多个条件的更新。SQL 2008

具有多个条件的更新。SQL 2008
EN

Stack Overflow用户
提问于 2014-09-02 14:55:16
回答 1查看 48关注 0票数 0

我有张桌子..。

代码语言:javascript
运行
复制
ProjectID    UserID    RoleID
101          1         10
101          2         10
102          2         10
102          3         10
103          1         10

目前只有一种类型的角色,角色'10',但我想添加一个新的角色,角色'11',这将作为一个领导。因此,任何具有'10‘角色的用户的项目,都应该有一个领导。被选择为领导者的用户将基于一个优先级列表,在本例中,我们将说顺序是1、2、3。

预期结果..。

代码语言:javascript
运行
复制
ProjectID    UserID    RoleID
101          1         11
101          2         10
102          2         11
102          3         10
103          1         11
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-02 14:59:23

通过使用row_number(),您可以确定哪个用户具有最高优先级。Server让我们在可更新的CTE中执行此操作,因此查询如下:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25626401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档