Основная проблема с вашим кодом состоит в том, что вы используете строку ("general score"
) при попытке ссылки на поле (это, вероятно, приводит к ошибке несоответствия типов).
Вы не указалиполе в вашей таблице, которое содержит дату для каждой записи, и поэтому выбор соответствующего набора записей для данного месяца невозможен без этой информации.
Однако, чтобы исправить ваш текущий код, я бы предложил следующее:
select avg(voc2019.[general score]) as General_Score, avg(voc2019.re_score) as Re_score
from voc2019
where voc2019.name = "Matt"
Если бы вы идентифицировали поле, содержащее дату для каждой записи, вы могли бы рассчитать среднее значение за месяц, используя что-то вроде:
select
dateserial(year(voc2019.date), month(voc2019.date), 1) as [Month],
avg(voc2019.[general score]) as General_Score,
avg(voc2019.re_score) as Re_score
from
voc2019
where
voc2019.name = "Matt"
group by
dateserial(year(voc2019.date), month(voc2019.date), 1)
Выше предполагается, что ваша таблица voc2019
содержит поле с именем date
, датирующее каждую запись.
РЕДАКТИРОВАТЬ:
Поскольку ваша дата фактически хранится в виде текстового поля, а не поля даты, вы можете использовать DateValue
функция для разбора текстового содержимого в значение даты.
Следовательно, чтобы получить среднюю оценку за Мэтта в январе, вы можете использовать что-то вродеследующее:
select
avg(voc2019.[general score]) as General_Score,
avg(voc2019.re_score) as Re_score
from
voc2019
where
voc2019.name = "Matt" and
month(datevalue(voc2019.date)) = 1 and
year(datevalue(voc2019.date)) = 2019
В качестве альтернативы, поскольку ваша дата хранится в виде текста, вы можете использовать оператор like
для сопоставления только дат в январе, например:
select
avg(voc2019.[general score]) as General_Score,
avg(voc2019.re_score) as Re_score
from
voc2019
where
voc2019.name = "Matt" and voc2019.date like "##-01-2019"