2013-10-16 53 views
3

我試圖對數據庫中名爲NonConf的其中一個表進行更改。目前,我們有三個是/否字段被稱爲Closed,OpenOnHold。我們將添加更多狀態,並且我認爲繼續爲新狀態添加字段是一個糟糕的主意。相反,我想將字段轉換爲一個Status字段。將三個字段合併爲一個

我已將Status字段添加到NonConf表中。如何使用更新查詢以填充Status

回答

4

可以使用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

2

東西沿着這些線路,每個狀態一個查詢

UPDATE yourTable 
SET status = 'Closed' 
WHERE yourTable.Closed = 'Yes' 
    AND status IS NOT NULL 
3

您可以使用一個查詢通過嵌套IIF更新一杆Status

UPDATE NonConf AS N 
SET N.Status = 
IIF (N.Closed, "Closed", 
IIF(N.Open, "Open", 
IIF(N.OnHold,"OnHold","")))