Выберите все столбцы в группе с помощью ошибки throws - PullRequest
0 голосов
/ 13 октября 2011

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

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

edit: это действительно помогло понять много1011 *http://weblogs.sqlteam.com/jeffs/archive/2007/07/20/but-why-must-that-column-be-contained-in-an-aggregate.aspx

Ответы [ 2 ]

4 голосов
/ 13 октября 2011

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

Я рекомендую прочитать на GROUP BY .

3 голосов
/ 13 октября 2011

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

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

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

...