我试图对数据库中名为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","")))