将三个字段合并为一个字段

时间:2013-10-16 20:45:47

标签: sql ms-access sql-update

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

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

3 个答案:

答案 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