我想基於表中列的值更新臨時表。我的CASE聲明似乎不起作用。有任何想法嗎?非常感謝。無法執行與CASE語句更新
這裏是我創建臨時表的地方。這些列包含值。
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)
)
這裏的嘗試更新(我已經添加了更多細節):
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
此代碼顯然是行不通的。預處理器不像多個SET命令。
它不是'CASE' *聲明*,它是*表達式*。 'CASE'不能用作SQL中的控制流。 – Siyual
這不起作用。 CASE語句不是IF/ELSE邏輯。 –
爲什麼有人會低估這一點?這似乎是一個完全合法的問題,並且誤解了某些事情是如何運作的。 –