2013-10-16 94 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","")))