0

私はこのようなテーブルを持っています。テーブルが再作成されるたびに(1日1回)、ユーザー名とさまざまなスキルがすべて0に設定されます(ユーザー名とスキルが6に設定されます)

UserName    S1      S2      S3      S4      S5      S6
MATTHEWS    0       0       0       0       0       0
FOREMANE    0       0       0       0       0       0
CASTORP     0       0       0       0       0       0
RODNEYR     0       0       0       0       0       0

..。

別のテーブル。

UserName    Skill
MAITAA      In Unre
PORTALAL    Out TLG (Kit)
NAVAROLEO   In Kit

したがって、私がしなければならないのは、テーブルを(UserNameで)結合し、テーブル1をこのルールで更新することです。表2のSillが(In Unre)と言う場合、表1のS1はTRUE(1)に変更する必要があり、表2のスキルがIn Kitと言う場合、表1のS2はTRUEに変更する必要があります。

私の知る限り、ケース付きのUpdateを使用しますが、両方のテーブルを横断するために結合を配置するのに問題があります。

何か案が?ありがとう。

4

1 に答える 1

1

これを試して:

ここではSだけを更新しようとしました!ルールの値に基づくS2。同様に、テーブル1の列をさらに追加できます。

CREATE TABLE test6(UserName varchar(10),S1 int,S2 int,S3 int,S4 int,S5 int,S6 int)
INSERT INTO test6
VALUES('MATTHEWS',0,0,0,0,0,0),
('FOREMANE',0,0,0,0,0,0),
('CASTORP',0,0,0,0,0,0),
('RODNEYR',0,0,0,0,0,0)

select * from test6

create table test7(UserName varchar(20),Skill varchar(50))
INSERT INTO test7
VALUES('MATTHEWS','In Unre'),
('PORTALAL','Out TLG (Kit)'),
('NAVAROLEO','In Kit')

update t1 SET t1.S1 = CASE WHEN t2.Skill='In Unre' then 1 else 0 end,
              t1.S2 = CASE WHEN t2.Skill='In Kit'  then 1 else 0 end 
from test6 t1 inner join test7 t2
on t1.UserName = t2.UserName 
于 2012-08-03T12:45:47.877 に答える