我正在尝试更改我们数据库中名为NonConf
. 目前,我们有三个是/否字段,分别称为Closed
、Open
和OnHold
。我们将添加更多状态,我认为继续为新状态添加字段是个坏主意。相反,我想将字段转换为一个Status
字段。
我已经将该Status
字段添加到NonConf
表中。如何使用UPDATE查询来填充Status
?
我正在尝试更改我们数据库中名为NonConf
. 目前,我们有三个是/否字段,分别称为Closed
、Open
和OnHold
。我们将添加更多状态,我认为继续为新状态添加字段是个坏主意。相反,我想将字段转换为一个Status
字段。
我已经将该Status
字段添加到NonConf
表中。如何使用UPDATE查询来填充Status
?
您可以使用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
。
您可以使用一个查询Status
通过嵌套更新一次IIF
:
UPDATE NonConf AS N
SET N.Status =
IIF (N.Closed, "Closed",
IIF(N.Open, "Open",
IIF(N.OnHold,"OnHold","")))
沿着这些思路,每个状态一个查询
UPDATE yourTable
SET status = 'Closed'
WHERE yourTable.Closed = 'Yes'
AND status IS NOT NULL