2016-03-25 5 views
0

У меня есть таблица с годами, месяцами, результатами, и я создал запрос, чтобы изолировать показатель MAX за каждый месяц. Теперь я хочу создать запрос на обновление, который будет отмечать каждый элемент в новом столбце, но я не совсем уверен, как данный MAX.Преобразование запроса, содержащего MAX, в оператор UPDATE в Access

SELECT a.Year, Max(a.Score) AS MaxOfScore, a.Month FROM a GROUP BY a.Year, a.Month, a.Score HAVING (((a.Month) Is Not Null));

Как написать заявление обновления, который добавляет «х» в новый столбец, a.High?

Благодаря

+1

nonagging mysql - хорошее начало .... – BK435

ответ

0

Я не уверен, что добавление это как статическое значение в таблице, что вы действительно хотите сделать, но вот код, который:

update a set a.high = b.MaxOfScore from 
a left join (
SELECT a.Year, Max(a.Score) AS MaxOfScore, a.Month 
FROM a 
GROUP BY a.Year, a.Month 
HAVING (((a.Month) Is Not Null)) 
) b on a.year = b.year and a.month = b.month 

Что вы, вероятно, хочу сделать вместо этого просто выберите значение с помощью запроса:

SELECT a.Year, a.Month, a.Score, b.MaxOfScore from 
a left join (
SELECT a.Year, Max(a.Score) AS MaxOfScore, a.Month 
FROM a 
GROUP BY a.Year, a.Month 
HAVING (((a.Month) Is Not Null)) 
) b on a.year = b.year and a.month = b.month 
+0

Спасибо. Да, см. Мой комментарий выше к Parfait о том, что я закончил делать. В принципе, расширилось ваше второе предложение. –

0

в MS Access SQL, обновление запросы должны быть обновляемыми и, следовательно, агрегатные запросы не могут быть объединены в таблицу уровня блока. Однако вы можете использовать Domain Aggregate functions. Кроме того, если месяц и год является строки обязательно сцепить их значение с вложенными одинарными кавычками:

UPDATE a 
SET a.High = DMax("Score", "a", "Year=" & a.Year & 
           " And Month=" & a.Month & 
           " And Month Is Not Null"); 

Обратите внимание: Функции домена доступны только в запросах SQL в программе MS Access UI и не в Jet/ACE SQL Двигатель, вызываемый снаружи MSAccess.exe с использованием ODBC/OLEDB.

+0

Спасибо, «обновляемая» вещь имеет очевидный смысл после размышления об этом и означала, что мне пришлось по-другому думать о моем подходе. То, что я сделал, было MAKE TABLE из моего запроса SELECT, который включал первичный ключ, обновил эту таблицу с моим полем, затем выполнил инструкцию update в исходной таблице, где оба первичных ключа таблицы были равны. –

+0

Также другой подход. Рад слышать, как вы решили свою проблему. Если мой ответ будет полезным, пожалуйста, примите его, чтобы подтвердить разрешение. – Parfait