2016-09-08 3 views
0

Я пытаюсь преобразовать SSMS SQL для доступа к SQL, и я считаю весь процесс довольно расстраивающим! У меня SQL, который отлично работает в SSMS, но не может заставить его работать в Access. SQL относительно прост. Все, что он делает, - это обновление одного поля в таблице на основе количества элементов во второй таблице.SQL v псевдоним выбора таблицы доступа

update Summary_Complaint_Table set period1_count = sql.mycount from 
(
select t2.category,count(t2.category)as mycount 
from complaints t2 
where t2.date_received between #1/9/2015# and #23/12/2016# 
group by category 
) as sql 
where Summary_Complaint_Table.category = sql.category 

Внутренний Select работает отлично, как это делает внешнее обновление, когда я заменяю sql.count и sql_category со значениями. Ошибка я получаю

Syntax error (missing operator) in query expression 'sql.mycount from  
(select t2.category,count(t2.category)as mycount from complaints t2 
where t2.date_received between #1/9/2015# and #23/12/2016# 
group by category) as sql' 

Оригинальные SSMS (SQL Server 2005) синтаксис, который работает в

update #temp set period1_count = sql.mycount 
from 
(
select t2.category,count(t2.category)as mycount 
from complaints t2 
where t2.date_received between @period1_from and @period1_to 
group by category 
) as sql 
where 
#temp.category = sql.category 
+0

Это поможет? http://stackoverflow.com/questions/871905/use-select-inside-an-update-query – Prisoner

ответ

2

Доступ не может обновлять данные в одном SQL, если он содержит агрегацию/группу по функциям в любой части SQL. В качестве обходного пути вы можете использовать функцию DCount вместо Count() .. Group By.

+0

Спасибо за это Сергей. Я успешно использовал это для создания необходимых мне данных. Мне кажется, что я буду использовать большую часть моего Access SQL с помощью VBA! – MiguelH

0

Я считаю, что вам нужно пространство и "как":

'sql.mycount from  
(select t2.category, count(*) as mycount from complaints as t2 
where t2.date_received between #2015/09/01# and #2016/12/23# 
group by category) as sql' 

Кроме того, последовательность даты dd/mm/yyyy не будет работать там, где dd равно 12 или меньше.

Смежные вопросы