#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 не в одинарные кавычки.