按主键与主键和从属列分组

问题描述 投票:0回答:1
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。

sql sql-server group-by primary-key
1个回答
1
投票
只需使用聚合函数:

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
投票
从T1选择不同的a,b

逐字地..对group by子句中未提及的列使用适当的聚合函数

© www.soinside.com 2019 - 2024. All rights reserved.