テーブルの列の値に基づいて一時テーブルを更新しようとしています。私のCASEステートメントは動作していないようです。何か案は?大いに感謝します。CASE文でUPDATEを実行できません
ここで私は一時テーブルを作成します。列には値が含まれます。このコードは明らかに動作していない
UPDATE #Accounts
--when fa_rows is 2 I need to do this
SET NewFARate1 = CASE FA_rows WHEN 2 THEN PctRate12 - PctRate7 END,
NewFARate2 = CASE FA_rows WHEN 2 THEN PctRate3 - PctRate8 END,
---when fa_rows is 3 I need to do this
SET NewFARate1 = CASE FA_rows WHEN 3 THEN PctRate12 - PctRate7 END,
NewFARate2 = CASE FA_rows WHEN 3 THEN PctRate3 - PctRate8 END,
NewFARate3 = CASE FA_rows WHEN 3 THEN PctRate3 - PctRate8 END
--when fa_rows is 4 I need to do this
SET NewFARate1 = CASE WHEN 4 THEN PctRate2 - PctRate7 END,
NewFARate2 = CASE WHEN 4 THEN PctRate3 - PctRate8 END,
NewFARate3 = CASE WHEN 4 THEN PctRate4 - PctRate9 END,
NewFARate4 = CASE WHEN 4 THEN PctRate5 - PctRate10 END
WHERE FA_rows = PR_rows
:
IF OBJECT_ID('tempdb..#Accounts') IS NOT NULL DROP TABLE #Accounts;
Create Table #Accounts
(
FA_rows bigint,
PR_rows bigint,
NewFARate1 decimal(10,5),
NewFARate2 decimal(10,5),
NewFARate3 decimal(10,5),
NewFARate4 decimal(10,5),
NewFARate5 decimal(10,5),
PctRate1 decimal (10,5),
PctRate2 decimal (10,5),
PctRate3 decimal (10,5),
PctRate4 decimal (10,5),
...PctRate10 decimal (10,5)
)
はここで試みられ、更新(私は詳細を追加しました)です。プリプロセッサは複数のSETコマンドと似ていません。
これは 'CASE' *文ではなく、*式*です。 'CASE'はSQLの制御フローとして使用できません。 – Siyual
これは動作しません。 CASE文はIF/ELSEロジックではありません。 –
なぜ誰かがこれをdownvoteだろうか?それは完全に正当な疑問や、何かがうまくいくかどうかの誤解のようです。 –