2013-12-14 57 views
0

我在SQL中弄溼了我的腳,特別是因爲我現在正在處理的問題,我知道如何使用Excel中的參考Countif公式來完成任務,我正在處理近100萬條記錄,Excel不斷對我進行轟炸,SQL似乎是一種更有效的方法來完成任務。SQL MS Access條件更新查詢引用其他表

背景:

基本上我有一個 '摘要' 表是這樣的:

ID_summary(ID_num, exist_2009, exist_2010, exist_2011, exist_2012) 

我然後在每個對應於2009年,2010年,2011年和2012僅使用兩個立柱4層的表每個表ID_num和日期。

2009(ID_num,date) 

ID_summary表具有四年表中存在的所有唯一ID的全面列表。我通過四年表的工會創建了這份清單。

問題:(?)

我想寫一個更新查詢來填充ID_summary表「TRUE」或「1」爲每個「exists_20XX」欄目,爲每個記錄,如果身份證號碼出現在相應的年份表格中。

例如,如果ID 002只出現在2009年和2012年則在彙總表中的一行ID 002應該是這樣的

ID_summary(ID_num, exist_2009, exist_2010, exist_2011, exist_2012) 
ID_002,TRUE,FALSE,FALSE,TRUE 

我已經做了類似的基本查詢做一些數據的清洗和已經獲得了成功的結果,但它總是引用同一個表中的其他字段來確定字段是否應該重新編碼。

我使用的MS Access 2010中

任何幫助,不勝感激!

回答

1

好的,我在這裏查過。

http://msdn.microsoft.com/en-us/library/office/bb221186%28v=office.12%29.aspx

似乎語法可能會略有不同
的MS Access比它是SQL Server。

順序嘗試這兩個:

update ID_summary 
set exist_2009 = 0 -- false 

update 
ID_summary ids 
left join table_2009 t on ids.ID_num = t.ID_num 
set 
ids.exist_2009 = 1 -- true 
where 
(t.ID_Num is not null) 

如果是SQL Server中,一個需要
使用一個稍微不同的語法。
但我們在這裏講MS Access。

update ids 
set 
ids.exist_2009 = 0 -- false 
from 
ID_summary ids 

update ids 
set 
ids.exist_2009 = 1 -- true 
from 
ID_summary ids 
left join table_2009 t 
on ids.ID_num = t.ID_num 
where 
(t.ID_Num is not null)