2

質問: group_id AS RoleId 列の値を変更して、group_id AS RoleId = 3 のときに値が対応する値 5 に変更されるようにする最善の方法は何ですか?

背景: 次のクエリでは、2 つの異なるデータベースの 2 つのテーブルを、実際の一意のキーなしで比較しています。1 つのテーブルのエイリアスで first_name 列と last_name 列を結合し、それを他のテーブルの Name 列と比較する必要がありました。必要な結果が得られますが、RoleId 列と group_id 列に関連する 2 つの列があります。これらには対応する値があるため、たとえば RoleId =5 は group_id =3 と同じですが、RoleId = 4 は group_id = 4 と同じです。

ステートメントを選択:

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 
4

1 に答える 1

3

グループ 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
...
于 2013-08-30T15:27:40.773 に答える