选择列表中的列 '***' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

错误提示:

消息 8120,级别 16,状态 1,第 2 行
选择列表中的列 'Qiu.dbo.students.name' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

解决方案:

如果 SELECT 子句 <select list> 中包含聚合函数,则 GROUP BY 将计算每个组的汇总值。指定 GROUP BY 时,选择列表中任何非聚合表达式内的每个属性名都应包含在GROUP BY列表中,或者GROUP BY表达式必须与选择列表表达式完全匹配。

错误用法:

SELECT name,sex,SUM(age)
  FROM [Qiu].[dbo].[students]
  group by sex

更正后用法:

SELECT name,SUM(age)
  FROM [Qiu].[dbo].[students]
  group by sex,name
使用Group By子句的时候,一定要记住下面的一些规则:
(1)不能Group By非标量基元类型的列,如不能Group By text,image或bit类型的列
(2)Select指定的每一列都应该出现在Group By子句中,除非对这一列使用了聚合函数;
(3)不能Group By在表中不存在的列;
(4)进行分组前可以使用Where子句消除不满足条件的行;
(5)使用Group By子句返回的组没有特定的顺序,可以使用Order By子句指定次序。
use Qiu
select sex,avg(age)
from students
group by sex

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...