我有一个Excel表,我导入到Access 2010数据库表。唯一的问题是一个字段(健康计划)的数据与我们目前在数据库中使用的数据不一致。例如,正在导入的数据显示" GA"与它应该是什么," CHC - GEORGIA"。我能够一次更改一个简单的更新查询,但我有15个以上的状态需要更改。这就是我在将这些组合成一个查询时所拍摄的内容:
UPDATE [Dan - CSF Quotes] SET [Dan - CSF Quotes].[Health Plan] = "HEALTHAMERICA And HEALTHASSURANCE"
WHERE ((([Dan - CSF Quotes].[Health Plan])="PA"))
UNION
UPDATE [Dan - CSF Quotes] SET [Dan - CSF Quotes].[Health Plan] = "CHC - GEORGIA"
WHERE ((([Dan - CSF Quotes].[Health Plan])="GA"));
.
.
.
etc
有没有简单的方法可以将值更改/更新到这一个字段?
答案 0 :(得分:2)
您可以使用SWITCH将不同的条件应用于单个更新语句:
UPDATE [Dan - CSF Quotes]
SET [Health Plan] = SWITCH
( [Health Plan] = "GA", "CHC - GEORGIA",
[Health Plan] = "PA", "HEALTHAMERICA And HEALTHASSURANCE"
)
WHERE [Health Plan] IN ("GA", "PA");
答案 1 :(得分:1)
由于您有15个以上的搜索/替换对,请考虑将它们存储在单独的表中,例如下面的 HealthPlanReplacements 示例表。然后,您可以使用UPDATE
查询将替换表连接到主数据表。
此查询执行我认为您想要的内容:
UPDATE [Dan - CSF Quotes] AS dq
INNER JOIN HealthPlanReplacements AS hpr
ON dq.[Health Plan] = hpr.search_plan
SET dq.[Health Plan] = [hpr].[replace_plan];
这是我用来在Access 2007中测试该查询的 HealthPlanReplacements 表:
search_plan replace_plan
----------- ---------------------------------
GA CHC - GEORGIA
PA HEALTHAMERICA And HEALTHASSURANCE