2017-10-19 10 views
0

更新クエリで集約を使用できないことは知っていますが、この更新プログラムの構文を書き込む方法はわかりません。 INSTOCKはイエスグループでクエリを更新する

に更新R2Sよりも、すべての項目にYESであればこれが

UserID Item   InStock  R2S 
14   S0   Yes 
28   M23   No 
10   Ca2   No 
14   G01   No 
16   G21   Yes 
16   G33   Yes 

は今、私は後にしています何の各ユーザーIDのためであるしかし私は考慮されませんので、以下の構文を試しサンプルデータであります16と14のような倍数を持つuserIDは、それは単に行ごとに見えます。

どのようにして、両方の項目がr2sなので、ユーザーID 16を「はい」にのみ変更することができますか?

答えて

1

これはSQL Serverですが、動作しているか閉じる必要があります。

update send 
set R2S = 'Yes' 
from send 
join (select UserId 
     from send 
     group by UserId 
     having min(InStock) = 'Yes') Maxes 
on send.UserId = Maxes.UserId 

サブクエリは、「いいえ」を持つ人を削除して、それに参加します。

データポイントが2つの場所に存在することは嫌いです(「いいえ」がないという事実)。クエリは、使用する準備ができた時点で実行する必要があります。

フォローする次の読者のために簡単であるかもしれないもう一つの方法:

update send 
    set R2S = 'Yes' 
    from send 
    where UserId not in (select UserId 
      from send 
      where InStock = 'No')