Прежде всего позвольте мне сказать, что это повторение нескольких вопросов стека переполнения, что все есть ответы - но ни один из них не решить мою проблемуКак выбрать топ 1 в запросе Access - и на самом деле заставить его работать
например - эти два: Access join on first record и How to select top 10 in Access query?
Моя проблема должна быть простой - но - очевидные ответы не работают.
У меня есть две таблицы. Клиент и транзакции.
Я хочу вернуть список клиентов с последней датой продажи. Easy right .... Выберите столбцы для клиента, а затем для даты продажи введите подзапрос, который ограничивает возврат к 1 позиции.
SELECT
[Client].[LastName] as C1,
[Client].[FirstName] as C2,
(SELECT TOP 1 Transactions.SaleDate FROM Transactions WHERE Transactions.ClientID=Client.ClientID ORDER BY Transactions.SaleDate Desc) as C3,
[Client].[ClientID] as C4
FROM [Client]
НО доступ говорит мне, что подзапрос имеет эту проблему: «В большинстве одной записи может быть возвращено этим подзапрос.»
Ах ... но переполнение стека имеет ответ на «В этом подзапросе может быть возвращено не более одной записи». ошибка.
---> «В ваш подзапрос возвращается более одного результата». "Попробуйте фиксируя данные с помощью выберите верхнюю 1"
At most one record can be returned by this subquery. (Error 3354)
хорошо ... Отлично.
Есть ли что-то еще в SQL, которое может смутить его, что я полностью отсутствует?
Вместо подзапроса, возможно, вы можете использовать «DMax» («SaleDate», «Transactions», «ClientID =» и ClientID) AS C3' –
Добавьте, что в качестве ПРИСОЕДИНИТЕСЬ и попробуйте, доступ к SQL-синтаксическому анализу может быть разорен (был там), попробуйте это: – Alex