在Sql中,如何使用case语句更改值?

在Sql中,如何使用case语句更改值?,sql,sql-server-2008,switch-statement,case,Sql,Sql Server 2008,Switch Statement,Case,问题: 将group_id AS RoleId列中的值更改为RoleId列的最佳方法是什么,以便在group_id AS RoleId=3时,将该值更改为相应的值5 背景: 在下面的查询中,我比较了两个不同数据库中没有真正唯一键的两个表。我必须将一个表上的first_name和last_name列组合起来,将其命名为它,然后将其与其他表的name列进行比较。它会产生我想要的结果,但是,它们有两列,分别与RoleId列和group_id列相关。它们具有相应的值,因此,例如RoleId=5与grou

问题: 将group_id AS RoleId列中的值更改为RoleId列的最佳方法是什么,以便在group_id AS RoleId=3时,将该值更改为相应的值5

背景: 在下面的查询中,我比较了两个不同数据库中没有真正唯一键的两个表。我必须将一个表上的first_name和last_name列组合起来,将其命名为它,然后将其与其他表的name列进行比较。它会产生我想要的结果,但是,它们有两列,分别与RoleId列和group_id列相关。它们具有相应的值,因此,例如RoleId=5与group_id=3相同,但RoleId=4与group_id=4相同

Select语句:

SELECT 
    users.UserName,
    users.phone,
    users.email,
    users.status,
    users.group_id AS RoleId   
FROM 
    (SELECT 
        Table1.dbo.users.first_name +' '+ Table1.dbo.users.last_name AS UserName,
        Table1.dbo.users.phone,
        Table1.dbo.users.email,
        Table1.dbo.users.status,
        Table1.dbo.users.group_id
     FROM
        Table1.dbo.users
    ) AS users
LEFT JOIN
    Table2.dbo.UsersInfo ON
    users.UserName = Table2.dbo.UsersInfo.Name
WHERE 
    Table2.dbo.UsersInfo.Name IS NULL 

如果您只想将组id 3转换为角色id 5并保持其余内容不变,那么这样的操作应该可以完成

SELECT 
users.UserName,
users.phone,
users.email,
users.status,
CASE WHEN users.group_id=3 THEN 5 ELSE users.group_id END AS RoleId
...

谢谢你的编辑,你比我快