以下のように複数のif文(約100)を使用してT-SQLコードを作成しました。最初のIF文の条件がTRUEと評価された場合でも、残りの99個の文が評価されます。SQL CASE式 - ローカル変数の値を設定する
IF(@check = 'abc') SET @var1 = @value
IF(@check = 'def') SET @var2 = @value
IF(@check = 'ghi') SET @var3 = @value
IF(@check = 'jkl') SET @var4 = @value
IF(@check = 'mno') SET @var5 = @value
…
…
これらを変換してCASE式を使用したいと考えています。例えば
CASE @check
WHEN 'abc' THEN SET @var1 = @value
WHEN 'def' THEN SET @var2 = @value
WHEN 'ghi' THEN SET @var3 = @value
WHEN 'jkl' THEN SET @var4 = @value
WHEN 'mno' THEN SET @var5 = @value
…
…
END
のためにしかし、私はそうすることはできませんよ、と私はCASE式の中にSETを使用することはできませんと言うSQLエラーが発生します。
私はこれをどのように実現することができますか?ありがとう!
これらの条件のそれぞれが異なる変数を設定している場合はelseを使用できますが、質問を正しく入力してもよろしいですか? –
'SET @ var1 = CASE WHEN ... THEN ... END'で動作しますか? – a1ex07
なぜ100種類の変数が必要ですか? '@ check'の値に基づいて* one *変数に代入するだけではどうですか? –