54406


1個のテーブル(A_TBL)の中で、「A番号」、「B番号」、「C番号」が共に同じレコードが存在することがあり、それらの中で「ステータス1」が”0”と”1”が混在している場合があります。

その条件に合致する全てのレコードに対して、「ステータス1」を”2"、「ステータス2」を”0”にするSQL文を作りたいのですが、上手くいきません。

どなたかご教示をお願いできますでしょうか。

(例）「A_TBL」  
項目名： A番号 , B番号, C番号 , ステータス1 , ステータス2

* * *
[code]

          "A001"  "B001"   "C01"        0            1
          "A001"  "B001"   "C01"        0            1
          "A001"  "B001"   "C01"        0            1
    
[/code]

* * *
[code]

          "A002"  "B001"   "C01"        1            1
          "A002"  "B001"   "C01"        1            1
    
[/code]

* * *
[code]

          "A003"  "B002"   "C01"        1            1
          "A003"  "B002"   "C01"        1            1
          "A003"  "B002"   "C01"        0            1
    
[/code]

* * *
[code]

          "A004"  "B002"   "C02"        1            1
          "A004"  "B002"   "C02"        1            1
          "A004"  "B002"   "C02"        1            1
    
[/code]

* * *
[code]

          "A005"  "B002"   "C01"        1            1
          "A005"  "B002"   "C01"        0            1
          "A005"  "B002"   "C01"        1            1
    
[/code]

* * *

（（例）の表記に誤りがあり、修正しました。sayuri様、指摘ありがとうございました。）

上記の内、「A003/B002/C01」と「A005/B002/C01」の組合せグループが変更対象となります。  
この3レコードに対して、ステータス1を"2"に、ステータス2を"0"に変更したいのですが。。

RDBMSは「SQL Server 2016」です。  
どうぞよろしくお願いいたします。


CC BY-SA 4.0
2019-04-22T10:57:21.607
54397
2019-04-23T01:37:01.540
2019-04-23T01:17:42.277
16778
16778
question
sql
同じ番号を持つグループの中でステータスが混在している場合だけ値を更新するSQL文を作成したい


「A003/B002/C01」と「A005/B002/C01」の組合せグループが対象であれば、「A番号」、「B番号」、「C番号」が **同一**
かつ「ステータス1」が **異なる**
レコードが存在するものをUPDATEすることで[対応可能](http://sqlfiddle.com/#!18/fe218/1)です。(SQL Server
2017で確認)

[code]

    update T
    set    STATUS1 = 2,
           STATUS2 = 0
    from   A_TBL T,
           A_TBL D
    where  T.A_ID = D.A_ID
    and    T.B_ID = D.B_ID
    and    T.C_ID = D.C_ID
    and    T.STATUS1 <> D.STATUS1;
    
[/code]


CC BY-SA 4.0
2019-04-23T01:37:01.540
54406
2019-04-23T01:37:01.540
9820
54397
answer