Выбор дат в запросе в MS Access

#sql #ms-access

#sql #ms-access

Вопрос:

Я хотел бы сделать запрос для набора дат в MS Access.

На английском языке я хотел бы выбрать все записи старше 2003 года, но меньше 2006 года для группы 1 и группы 2 (всего 4 группы), ЗА ИСКЛЮЧЕНИЕМ [2005-09-09 в группе 1] и [2005-10-03 и 2005-10-04 в группе 2].

Вот что у меня есть на данный момент:

 WHERE 
Group = "1"   AND
Group = "2"   AND
  (Year(Date) = 2004 AND
   Year(Date) = 2005)
  

Однако я быстро запутался в том, как включить исключения. Также возможно ли включить более одного критерия выбора для группы или года для одной строки? Может ли кто-нибудь помочь мне разобраться в этом?

Ответ №1:

Это можно обработать с помощью AND/OR логики

Попробуйте это Where предложение

 WHERE 
(
(Group = '1'  AND Date() <> #2005-09-09#)
OR 
(Group = '2'  AND DATE() NOT IN (#2005-10-03# , #2005-10-04#)
) 
AND 
(Year(Date()) between 2004 AND 2005)
  

Комментарии:

1. Похоже, это не работает, хотя, очевидно, близко. По какой-то причине это: Date != '2005-09-09' кажется проблематичным фрагментом кода. Я получаю синтаксическую ошибку, за исключением случаев, когда я удаляю эту часть. Однако, когда я удаляю эту часть, я получаю следующее сообщение об ошибке: this expression is typed incorrectly or is too complex . Есть идеи?

2. @boshek — Возможно, это из-за того, что != оператор попробуйте заменить на <> . Обновленная проверка сейчас

3. @boshek — != является ли проблема в MS-ACCESS for НЕ ТАКОЙ, какой она является <> . Вот официальная ссылка support.office.com/en-us/article /…

4. Да, это сработало, хотя я все еще получаю это сообщение об ошибке This expression is typed incorrectly, or it is too complex to be evaluated. For example, a numeric expression may contain too many complicated elements. Try simplifying the expression by assigning parts of the expression to variables

5. Даты должны быть заключены в # в access не в одинарные кавычки.