2011-12-30 5 views
0

次の表を取り、カーソルを使用してval2を生成する、実際には非効率なSQLスクリプトがあります。私はすべてのval2の値を1つの更新で更新できるようにしたいが、val2はval1を使って各行に対して計算されます。sqlは各行の値に基づいて多くの行を更新します

val1: 1, val2 0 
val1: 2, val2 0 
val1: 3, val2 0 
val1: 4, val2 0 
val1: 5, val2 0 

だから私は、あなたがこのようなものがあるだろう、と想像:私は、SQLの単一の行にこれを書くことができますどのように

UPDATE Table SET val2 = (some code based on val1 for each row) 

を?

+0

を私はあなたに私の最高の推測を与えてくれたが、あなたがしたい場合は、あなたがしたいコードについてより具体的にする必要がありますより完全な答え。 – Eric

答えて

5

そのように機能します。あなたはcase文が適用されているしたいコードのいくつかのセットを持っている場合:

update table set 
    val2 = 
     case 
      when val1 = 1 then 'One' 
      when val1 = 2 then 'Two' 
      when val1 = 3 then 'Three' 
      else 'Something something' 
     end 
+0

私は、val2を使ってval1を使うと、同じ行のval1だとみなします。ありがとう:) – sooprise

+0

@sooprise - はい、選択ステートメントの複数の列の値を組み合わせるのとほとんど同じです – Murph

関連する問題