8

私は2つのテーブルを持っています、

データベース 1:

表1:

  • ID -001(int)

  • 名前 -xxx(varchar)

  • 男性 -0 (ビット)

  • 女性-1 (ビット)

データベース 2:

表 2:

  • ID -1 (整数)

  • Ca.Name-yyy (varchar)

  • 性別 - M または F (varchar)

これらは私のテーブルです。データベース 2 のテーブル 2 からデータベース 1 のテーブル 1 にデータを更新したいと考えています。だから私は更新クエリを作成します。しかし、性別フィールドに問題があります

Select 'UPDATE T1
 SET T1.MALE ='+ CASE WHEN r.Gender = 'M' THEN 0 ELSE 1 END

 FROM T2 As r

以下のコードで、私がスターを付けたものは、ここで if ステートメントを使用する方法に疑問があります。誰かが私の問題を解決することを理解していますか?

4

2 に答える 2

6

case whenこの目的で使用します。

この質問に従ってください:

SQL Server: CASE WHEN OR THEN ELSE END => OR はサポートされていません

CASE  
  WHEN GENDER='M' THEN 0 
  ELSE 1 
END 

これはあなたの場合です。

構文の詳細: CASE (Transact-SQL)

于 2013-04-13T05:28:19.017 に答える
1

同様に、 を使用する必要がありますCASE WHEN。クエリは次のようになります。

UPDATE T1 
SET T1.MALE = CASE WHEN T2.caname = 'm' THEN 0 ELSE 1 END,
    T1.female = CASE WHEN T2.caname = 'm' THEN 1 ELSE 0 END  // you also need update this otherwise a person would end up with two genders :)
FROM TABLE1 T1
INNER JOIN table2 T2 ON T2.ID = T1.ID

SQL フィドルのデモ:

于 2013-04-13T06:38:25.680 に答える