将三个字段合二为一
Posted
技术标签:
【中文标题】将三个字段合二为一【英文标题】:Combine three fields into one 【发布时间】:2013-10-16 20:45:46 【问题描述】:我正在尝试更改我们数据库中名为NonConf
的表之一。目前,我们有三个Yes/No 字段,分别称为Closed
、Open
和OnHold
。我们将添加更多状态,我认为继续为新状态添加字段是个坏主意。相反,我想将这些字段转换为一个 Status
字段。
我已经将Status
字段添加到NonConf
表中。如何使用 UPDATE 查询来填充 Status
?
【问题讨论】:
【参考方案1】:您可以使用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 或其他值来指示来源的 Yes/No 列都不是 True
,而不是空字符串。
【讨论】:
【参考方案2】:您可以使用一个查询通过嵌套的IIF
一次性更新Status
:
UPDATE NonConf AS N
SET N.Status =
IIF (N.Closed, "Closed",
IIF(N.Open, "Open",
IIF(N.OnHold,"OnHold","")))
【讨论】:
【参考方案3】:类似的东西,每个状态一个查询
UPDATE yourTable
SET status = 'Closed'
WHERE yourTable.Closed = 'Yes'
AND status IS NOT NULL
【讨论】:
以上是关于将三个字段合二为一的主要内容,如果未能解决你的问题,请参考以下文章
Javascript/Jquery 将输入字段限制为一位小数和数字