Я хочу написать выражение в моем запросе Access, чтобы проверить, есть ли элемент, который мы запускаем. на следующей неделе запустил 4 недели до этой даты. У меня возникли проблемы с пониманием того, как вы можете проверить что-то в одном запросе, а затем использовать возвращаемое значение этой проверки, чтобы проверить еще несколько вещей. Метод, который я пытался написать, сделать другой запрос, который будет использовать результаты первого запроса (где элементы из 7/20/2015
изолированы), чтобы проверить даты этих элементов, но я столкнулся с проблемой, потому что тогда мне нужно связать назад этот запрос к исходной таблице, которая дублирует данные.Как вы проверяете поле в запросе для определенных значений тогда и только тогда, когда другое поле имеет определенное значение?
Написанный в псевдо-коде, это будет выглядеть примерно так следующее:
Если item
имеет job_date
из 7/20/2015
, проверьте все экземпляры этого элемента до 7/20/2015
и если нет экземпляра для 7/13/2015
недель, 7/6/2015
, 6/29/2015
, или 6/22/2015
, а затем вернуть item
.
Написан в более наглядном виде:
item job_date
A 6/22/2015
A 6/29/2015
A 7/6/2015
A 7/13/2015
A 7/20/2015
item job_date
B 6/15/2015
B
B
B
B
B 7/20/2015
item job_date
C 6/22/2015
C
C
C 7/13/2015
C 7/13/2015
C 7/20/2015
item job_date
D
D
D
D
D
D
Пункт А не будет возвращен, потому что мы работаем непрерывно. Пункт B вернется, потому что, хотя мы запустили его на 6/15/2015
, это было более чем за 4 недели до 7/20/2015
. Item D
не вернется, потому что у него нет строки с заданной датой (7/20/2015
).
Примечание:
В идеале, я буду использовать выражение, которые всегда будут определять дату на следующей неделе автоматически, я просто использовал жесткие сроки для ясности. Если вы хотите использовать твердые даты, пожалуйста, не стесняйтесь.
Наши недели начинаются по понедельникам.
Товар может работать несколько раз в неделю. Например,
Item C
может иметь 2 ряда с7/13/2015
и7/13/2015
. Номер задания (не показан, но существует в той же таблице) является уникальным идентификатором в таблице. Если быItem C
выполнялись дважды, то заданиями были быH000001584-0030
иH00001584A-0030
.
Если * 7/20/2015 job_date * для пункта * B * не было, будет * B * быть включены в набор результатов запроса (когда целевая дата * 7/20/2015 *) ? – HansUp
Нет. Это связано с тем, что мы рассматриваем только элементы со строкой, которая имеет заданную дату. Затем этот список элементов будет проверен на предыдущие недели. – whatwhatwhat
Будет ли * job_date * всегда быть либо Null, либо дата понедельника? – HansUp