2016-10-27 2 views
0

У меня есть таблица доступа, PartDescriptions:Выберите Max Дата <Указано Дата

ID|PartNumber|PartPrice|DateEffective 
1 | AA001 |$0.10 |1/1/2016 
2 | AA002 |$0.20 |1/1/2016 
3 | AA003 |$0.30 |1/1/2016 
4 | AA001 |$0.15 |10/20/2016 

У меня есть форма с полем даты заказа. Я хочу, чтобы запрос, который будет выбирать максимальное значение DateEffective, меньше, чем поле даты заказа в моей форме. То есть, если моя дата заказа - 10/22/2016, для части AA001, я хочу, чтобы она выбрала цену в размере 0,15 доллара США (тот, который действует 10/20/2016), и все остальные цены на запчасти, действующие 1/1/2016 , но если моя дата заказа - 10/19/2016, я хочу, чтобы она выбрала цену $ 0,10 для AA001.

Это все, чтобы не писать цены в таблицу, а вместо этого обращаться к ним только в том случае, когда мне нужно запустить отчет для определенных заказов в любое время.

+0

'Это все, чтобы избежать необходимости писать цены на table'. Зачем? Обычная практика заключается в сохранении фактических цен в строках заказа, линиях счетов и так далее. Причина в том, что во время изменения цен и поиска данных на основе исторических данных может быть боль в * ss. Не упоминание возможных проблем с производительностью. Сказав это, что вы пробовали до сих пор (вы не должны ожидать, что мы создадим ваши запросы для вас)? – Rene

ответ

0

У меня не было возможности протестировать его, чтобы он, возможно, потребуется настройки для работы, но в основном:

SELECT PartPrice FROM PartDescriptions WHERE PartNumber='AA001' AND DateEffective IN 
(SELECT Max(DateEffective) FROM PartDescriptions WHERE PartNumber='AA001' and DateEffective<=#10/22/2016#) 
Смежные вопросы