我正在尝试更改名为NonConf
的数据库中的一个表。目前,我们有三个名为Closed
,Open
和OnHold
的 是/否 字段。我们将添加更多状态,我认为继续为新状态添加字段是个坏主意。相反,我想将字段转换为一个Status
字段。
我已将Status
字段添加到NonConf
表中。如何使用 UPDATE 查询填充Status
?
答案 0 :(得分: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, ""
)捕获落在前面对中的任何内容。也许不是空字符串,您更喜欢Null或其他值来表示所有来源的是/否列都不是True
。
答案 1 :(得分:3)
您可以使用一个查询通过嵌套Status
一次更新IIF
:
UPDATE NonConf AS N
SET N.Status =
IIF (N.Closed, "Closed",
IIF(N.Open, "Open",
IIF(N.OnHold,"OnHold","")))
答案 2 :(得分:2)
沿着这些方向的东西,每个状态的一个查询
UPDATE yourTable
SET status = 'Closed'
WHERE yourTable.Closed = 'Yes'
AND status IS NOT NULL