группировать по первичному ключу против первичного ключа и зависимых столбцов - PullRequest
0 голосов
/ 24 апреля 2020
CREATE TABLE T1 (a int primary key, b int);

SELECT a, b FROM T1 GROUP BY a;

- Сообщение 8120 уровня 16. Столбец 'T1.b' недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

Я хотел бы ожидалось, что это сработает, поскольку столбец b явно является зависимым столбцом, поэтому группировка по a, b - это то же самое, что группировка по a.

Я использую SQL Server 2016.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

SQL Сервер не поддерживает зависимые столбцы в GROUP BY. Все базы данных отличаются от стандартных спецификаций в некоторых отношениях. Итак, хотя то, что вы хотите сделать, разрешено в стандарте, не все базы данных поддерживают эту функцию.

Просто используйте функцию агрегирования:

SELECT a, MAX(b) as b
FROM T1
GROUP BY a;

Или включите ее в GROUP BY :

SELECT a, b
FROM T1
GROUP BY a, b;

И я должен также отметить, что GROUP BY в этом случае не требуется. Я подозреваю, что это относится к более сложным запросам, где это было бы уместно.

0 голосов
/ 24 апреля 2020

Если вам нужно отдельное значение, тогда используйте DISTINCT, а не группируйте по

ВЫБЕРИТЕ отличное a, b ОТ T1

otehrwise ..use правильную функцию агрегирования для столбца, не упомянутого в group by предложении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...