首页 > 解决方案 > 按主键与主键和依赖列分组

问题描述

CREATE TABLE T1 (a int primary key, b int);

SELECT a, b FROM T1 GROUP BY a;

--Msg 8120 级别 16。列 'T1.b' 在选择列表中无效,因为它既不包含在聚合函数或 GROUP BY 子句中。

我原以为这会起作用,因为 b 列显然是一个依赖列,所以按 a、b 分组显然与按 a 分组相同。

我正在使用 SQL Server 2016。

标签: sqlsql-servergroup-byprimary-key

解决方案


SQL Server 不支持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在这种情况下是不必要的。我怀疑这是在适当的地方参考更复杂的查询。


推荐阅读