MS Access SQL Query - PullRequest
       21

MS Access SQL Query

0 голосов
/ 03 июня 2018

Я новичок в SQL и пытаюсь отобразить максимальное значение из столбца, а также отобразить отдельный столбец из той же таблицы, однако мой запрос не работает.

Вот мой код:

    SELECT ProductName, ProductPrice, MAX(ProductPrice) AS MostProfitable
    FROM tblProducts;

Я получаю эту ошибку:

"Ваш запрос не включает указанное выражение" ProductName "как частьагрегатная функция. "

Пожалуйста, помогите!

Ответы [ 3 ]

0 голосов
/ 03 июня 2018

Простой способ заставить все столбцы использовать ORDER BY и TOP:

SELECT TOP (1) p.*
FROM tblProducts as p 
ORDER BY p.ProductPrice DESC;

Обратите внимание, что TOP в MS Access может возвращать больше строк, если есть связи.Если вам нужна только одна строка, добавьте дополнительный ключ в ORDER BY для предотвращения связей:

ORDER BY p.ProductPrice DESC, p.ProductName;
0 голосов
/ 04 июня 2018

там!

Ни одна из функций столбца не будет работать, пока вы не группируете свои строки.

То есть ваша функция MAX () не будет работать, потому что вы не использовали GROUP.

Вот SQL, который должен работать:

SELECT ProductName, ProductPrice, MAX(ProductPrice) AS MostProfitable
FROM tblProducts GROUP BY ProductName;

Я бы предложил вам добавить идентификатор вашего продукта в ваш запрос SQL и группировать запрос по нему.Но, к примеру, я сгруппировал ваш запрос по ProductName.

Помните, он не профессиональный.Поскольку различные продукты с одинаковыми названиями также будут объединены, чтобы показать одно значение MAX.

ЕСЛИ ЭТО РАБОТАЕТ, ПОЖАЛУЙСТА, ДАЙТЕ ДРУГИЕ ЗНАНИЯ.

0 голосов
/ 03 июня 2018

Вам не нужна функция агрегирования, просто получите ее, как показано ниже:

SELECT TOP(1) ProductName, ProductPrice
FROM tblProducts
ORDER BY ProductPrice DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...