2016-06-27 4 views
0

У меня есть таблица цен на сырьевые товары и цены, а другая таблица с данными о транзакциях поставщика, которая также имеет столбец с датами. Ценовые даты и столбец дат поставщиков не идентичны. Если я выберу дату из таблицы поставщика, я хочу получить цену товара на дату, ближайшую к дате транзакции поставщика. Цена товара может быть до или равна дате поставки поставщика, но не позднее этой даты.Доступ SQL: выберите самую последнюю дату, а не список дат

РАБОЧЕЕ ОТВЕТ: [List3 это возможные даты поставщика и песни4 это товар]

SELECT TOP 1 CommPrices.Price 
FROM CommPrices 
WHERE (((CommPrices.DateComm)<=[Forms]![Tool Should Cost]![List3]) AND ((CommPrices.Commodity)=[Forms]![Tool Should Cost]![List4])) 
ORDER BY CommPrices.DateComm DESC; 

Пример того, что я хочу:

Предположим, есть товар медь со следующей даты и цены данные: 01/01/2015 $ 10,00 & 01/01/2016 $ 5,00 & 06/06/2016 $ 15,00

Если я выбираю случайную дату поставщика, скажем, февраль в начале 2016 года, то самая последняя дата - 01/01/2016, и поэтому я должен получить 5 долларов США.

+0

Я удалил "MySQL" тег, поскольку синтаксис настоятельно предлагает MS Access. –

+0

Это доступ к Ms - извините, что –

+0

№. Самая последняя цена на сырье, ближайшая к выбранной дате поставщика. –

ответ

1

Просто добавьте TOP 1 и ORDER BY:

SELECT TOP 1 CommPrices.Price 
FROM CommPrices 
WHERE CommPrices.DateComm <= [Forms]![Tool Should Cost]![List 3] 
ORDER BY CommPrices.DateComm DESC; 
+0

Это дает мне ошибку: инструкция SELECT содержит зарезервированное слово или имя аргумента с ошибкой или отсутствием или неправильная пунктуация. –

+1

Удалить круглые скобки -> 'SELECT TOP 1' – HansUp

+0

Код работает, но не дает правильной информации. Я протестировал его, и он вернул мне гораздо большее число. Например, я тестировал его на товарный кобальт и выбрал дату 9/1/2015. Цена кобальта в этот день составляла 28 398,26 доллара США, но запрос дает мне 92,521,10 долларов. Он фактически дает этот последний номер для любой даты поставщика, которую я выбираю. –

Смежные вопросы