2013-12-14 5 views
0

Я получаю мокрые ноги в SQL, особенно из-за проблемы, над которой я сейчас работаю, я знаю, как выполнить задачу с использованием ссылочной формулы Countif в Excel, но потому что Я имею дело с почти 1 миллионом записей, Excel продолжает бомбить меня, и SQL казался более эффективным средством для выполнения задачи.SQL MS Access Условный запрос обновления, ссылающийся на другие таблицы

фона:

В принципе у меня есть 'Резюме' таблицы, как это:

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

Я тогда 4 таблицы каждый из которых соответствует 2009, 2010, 2011 и 2012 годах с помощью всего двух колонок в каждая таблица ID_num и дата.

2009(ID_num,date) 

В таблице ID_summary имеется исчерпывающий список всех уникальных идентификаторов, которые существуют в четырехлетних таблицах. Я создал этот список через союзы четырехлетнего стола.

Проблема: (?)

Я хочу написать запрос на обновление для заполнения таблицы 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) 
Смежные вопросы