2014-04-10 50 views
2

我有一個導入到Access 2010數據庫表的Excel表。唯一的問題是一個領域的數據(健康計劃)與我們目前在我們的數據庫中使用的數據不一致。例如,正在導入的數據顯示「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

UNION是用於連接多個SELECT結果合爲一體。您不能將其用於UPDATE。只需簡單地使用多個UPDATE語句。 – Tomalak

+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"); 
+0

謝謝!看起來這是工作。我認爲我可以「切換」多少條線路是有限制的,但是從目前爲止我添加的內容來看,它確實有效。 –

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]; 

這是HealthPlanReplacements表我用來測試查詢在Access 2007:

search_plan replace_plan 
----------- --------------------------------- 
GA   CHC - GEORGIA 
PA   HEALTHAMERICA And HEALTHASSURANCE