我試圖對數據庫中名爲NonConf
的其中一個表進行更改。目前,我們有三個是/否字段被稱爲Closed
,Open
和OnHold
。我們將添加更多狀態,並且我認爲繼續爲新狀態添加字段是一個糟糕的主意。相反,我想將字段轉換爲一個Status
字段。將三個字段合併爲一個
我已將Status
字段添加到NonConf
表中。如何使用更新查詢以填充Status
?
我試圖對數據庫中名爲NonConf
的其中一個表進行更改。目前,我們有三個是/否字段被稱爲Closed
,Open
和OnHold
。我們將添加更多狀態,並且我認爲繼續爲新狀態添加字段是一個糟糕的主意。相反,我想將字段轉換爲一個Status
字段。將三個字段合併爲一個
我已將Status
字段添加到NonConf
表中。如何使用更新查詢以填充Status
?
可以使用Switch表達式而不是嵌套多個IIf
表達式。
UPDATE NonConf AS N
SET N.Status =
Switch
(
N.Closed, "Closed",
N.Open, "Open",
N.OnHold,"OnHold",
True, ""
);
Switch
操作類似於在VBA SELECT CASE
。因此它返回表達式爲True
的第一個表達式/值對的值。最後一個表達式/值對(True, ""
)捕獲通過較早對的任何內容。也許不是一個空字符串,你寧願空值或其他值來表示沒有來源的是/否列是True
。
東西沿着這些線路,每個狀態一個查詢
UPDATE yourTable
SET status = 'Closed'
WHERE yourTable.Closed = 'Yes'
AND status IS NOT NULL
您可以使用一個查詢通過嵌套IIF
更新一杆Status
:
UPDATE NonConf AS N
SET N.Status =
IIF (N.Closed, "Closed",
IIF(N.Open, "Open",
IIF(N.OnHold,"OnHold","")))