3

我正在尝试更改我们数据库中名为NonConf. 目前,我们有三个是/否字段,分别称为ClosedOpenOnHold。我们将添加更多状态,我认为继续为新状态添加字段是个坏主意。相反,我想将字段转换为一个Status字段。

我已经将该Status字段添加到NonConf表中。如何使用UPDATE查询来填充Status

4

3 回答 3

4

您可以使用Switch表达式而不是嵌套多个IIf表达式。

UPDATE NonConf AS N
SET N.Status = 
    Switch
        (
            N.Closed, "Closed", 
            N.Open, "Open",
            N.OnHold,"OnHold",
            True, ""
        );

Switch操作类似于SELECT CASE在 VBA 中。所以它从表达式所在的第一个表达式/值对返回值True。最后一个表达式/值对 ( True, "") 捕获任何落在前面对中的东西。也许您更愿意使用 Null 或其他值来指示所有来源的 Yes/No 列都不是空字符串,而不是空字符串True

于 2013-10-16T20:53:00.660 回答
3

您可以使用一个查询Status通过嵌套更新一次IIF

UPDATE NonConf AS N
SET N.Status = 
IIF (N.Closed, "Closed", 
IIF(N.Open, "Open",
IIF(N.OnHold,"OnHold","")))
于 2013-10-16T20:47:45.420 回答
2

沿着这些思路,每个状态一个查询

UPDATE yourTable
SET status = 'Closed'
WHERE yourTable.Closed = 'Yes'
  AND status IS NOT NULL
于 2013-10-16T20:47:39.227 回答