У меня есть база данных с двумя таблицами, и я пытаюсь создать простой запрос, чтобы вернуть последнюю стоимость каждого элемента.Запросы MS Access для выбора последних дат
Пример:
ID, название, стоимость, дата вступления в силу
1 ... Элемент1 ... 5 ... 7/1/16
2 ... Элемент1 ... 4 ... 6/1/16
3 ... Элемент2 ... 6 ... 8/1/16
4 ... Элемент1 ... 2 ... 9/1/16
Должен возвращать только строки 3 (Item2) и 4 (последний пункт Item1).
Использование интерфейса Access, мне удалось заставить его работать, только если я не включаю стоимость вообще, и я не могу удалить стоимость из строки GROUP BY
без доступа к freaking. Любая помощь приветствуется!
SQL View:
SELECT Item.Item_ID, Item.Item_Name, Rate_Changes.Cost, Max(Rate_Changes.Effective_Date) As MaxOfEffective_Date
FROM Item INNER JOIN Rate_Changes ON Item.Item_ID = Rate_Changes.Item_ID
WHERE Item.Active=True
GROUP BY Item.Item_ID, Item.Active, Item.Item_Name,
Rate_Changes.Cost, Rate_Changes.Effective_Date
Это работает отлично от моих ограниченных данных образцов, спасибо! Я уверен, что никогда не должно быть повторяющихся эффективных дат для данного элемента - есть ли способ обеспечить это? Я практически совершенно новичок в доступе, поэтому я все еще общаюсь с командами. – rgdhndho
@rgdhndho. , , Если 'id' увеличивается вместе с датой, вы можете использовать' id' вместо 'effective_date'. –
Идентификатор - это первичный ключ, поэтому он определенно уникален. Я не совсем уверен, что вы имеете в виду; Я хочу, чтобы запрос показывал самую последнюю цену (максимальную эффективную дату) для каждого идентификатора элемента. Как можно использовать идентификатор (первичный ключ для таблицы Rate_Change) для группировки? Я попробовал ваш альтернативный код, и он получил предупреждение о том, что запрос возвращает не более одного результата. Я просто бросил
Order By rc.Item_ID
в конец, и он отлично работает, что я могу сказать. Спасибо за предложение! – rgdhndho