Выбрать все столбцы в группе по ошибке

#sql #group-by #syntax-error #northwind

#sql #группировка по #синтаксическая ошибка #northwind

Вопрос:

Я запустил запрос к базе данных Northwind Products Table , как показано ниже

select * from Northwind.dbo.Products GROUP BY CategoryID и я столкнулся с ошибкой. Я уверен, что вы также столкнетесь с той же ошибкой. Итак, какое правильное утверждение мне нужно выполнить, чтобы сгруппировать все продукты по их идентификаторам категорий.

редактировать: это действительно помогло многое понять

http://weblogs.sqlteam.com/jeffs/archive/2007/07/20/but-why-must-that-column-be-contained-in-an-aggregate.aspx

Ответ №1:

Вам нужно использовать агрегатную функцию, а затем сгруппировать по любым неагрегированным столбцам.

Я рекомендую ознакомиться с GROUP BY.

Комментарии:

1. Абсолютно нет. Вы не сказали нам, что вы хотите выбрать, поэтому я не могу предоставить вам «точный sql». Вам нужно понимать технологию, если вы надеетесь ее использовать, а не просить людей делать это за вас. Я рассказал вам, почему вы получаете ошибку и как ее исправить. Продолжайте и учитесь!!!

Ответ №2:

Если вы используете GROUP BY в запросе, все элементы в вашем SELECT операторе должны либо содержаться как часть агрегатной функции, например Sum() , или Count() , иначе они также должны быть включены в GROUP BY предложение.

Поскольку вы используете SELECT * , это эквивалентно перечислению ВСЕХ столбцов в вашем SELECT .

Поэтому либо перечислите их все в GROUP BY too, используйте агрегирующие функции для остальных, где это возможно, или выберите только CategoryID .