选择列表中的列 '***' 无效,因为该列没有包含在聚合函数或 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,sex,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
时间: 2024-09-09 02:41:49

选择列表中的列 &#39;***&#39; 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中的相关文章

sql-试图执行的查询中不包含作为聚合函数一部分的特定表达式

问题描述 试图执行的查询中不包含作为聚合函数一部分的特定表达式 SELECT SUM(XSJE / 1000) AS XSJE, SUM(SL) AS SL, LRRQ FROM MTGL_C_KPXX WHERE (LRRQ BETWEEN ? AND ?) sql语句于上,我想统计每天的销售金额总量和总数量,每天有多个销售金额,每个销售金额有一个时间,要统计一天的总和,group by 达不到我要的效果,然后就报错,不知道怎么改 解决方案 SELECT SUM(XSJE / 1000) AS

在oracle的聚合函数(sum、avg等)中使用NVL函数,强迫加入空值

前面我们在介绍oracle的聚合函数时提到如果在给定的值中存在空值的话,oracle将会忽略掉这些空值.这个处理的方式在大多数时候是符合我们要求的,但是在有些时候可能会有问题. 例如,现在到了年关,公司会对部分员工进行奖励,而当然会有一部分人没有得到奖励.比如现在有一张表中存的是员工的奖金额,那个将会有一部分人对应的奖金额是空值,因为他们根本就没有得到奖励,现在老板让你统计全公司的得奖平均额. 如果你直接使用 Select avg(bonus) from emp; 得到的结果将会是那些得到奖励的

SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数

原文:SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数  先来创建一个测试表 1 USE [tempdb] 2 GO 3 4 CREATE TABLE #temptb(id INT ,NAME VARCHAR(200)) 5 GO 6 7 INSERT INTO [#temptb] ( [id], [NAME] ) 8 SELECT 1,'

求助高手DataGridView的问题 (操作无效,原因是它导致对 SetCurrentCellAddressCore 函数的可重入调用。)

问题描述 voidHandleReceive(inteventID,stringdate,stringtime,intdspID,stringmessage,Imagei1,Imagei2){while(alertTable.Rows.Count>=50)//DataGridView中的报警信息超过50条就删除第一条,不断地往上顶{alertTable.Rows[0].Delete();}DataRowdr=alertTable.NewRow();dr[0]=eventID.ToString()

简单介绍MySQL中GROUP BY子句的使用_Mysql

 可以使用GROUP BY组值一列,并且如果愿意的话,可以将该列进行计算.使用COUNT,SUM,AVG等功能的分组列. 要了解GROUP BY子句考虑的EMPLOYEE_TBL的的表具有以下记录: mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+---

oracle中的聚合函数count、max、min、sum、avg等等

前面我们介绍了很多oracle中单行函数,在oracle中还存在另一类函数,那就是聚合函数,oracle中的聚合函数非常有用,主要是用来做些统计.平均之类的工作,你必须牢记. 先简单介绍一下几个常用的oracle中的聚合函数. Oracle中聚合函数名称 函数的作用 Count 用来求有效数据的数量 Max 用来求给定数据中最大的那一个数据 Min 用来求给定数据中最小的那一个数据 Avg 用来求给定数据的平均值 Sum 用来求给定数据的总和 Variance 用来求给定数据的标准差 Stdde

asp实现在web中显示电子表格数据(三)创建文件选择列表(转)

web|创建|电子表格|数据|显示 最后介绍创建文件选择列表的代码,在这里使用内建的FileSystem对象获得文件和文件夹的信息. 为简单起见,例程假设电子数据表文件和ASP文件位于同一个目录下.通过vServerFolder= Server.MapPath(".") 获取当前目录名称,并将之转换到folder对象,从而找出目录中的文件. FileSystem对象的.GetFolder方法使用如下: Set oFs = Server.CreateObject("Script

asp实现在web中显示电子表格数据(四)创建文件选择列表

最后介绍创建文件选择列表的代码,在这里使用内建的FileSystem对象获得文件和文件夹的信息. 为简单起见,例程假设电子数据表文件和ASP文件位于同一个目录下.通过vServerFolder= Server.MapPath(".") 获取当前目录名称,并将之转换到folder对象,从而找出目录中的文件. FileSystem对象的.GetFolder方法使用如下:Set oFs = Server.CreateObject("Scripting.FileSystemObjec

创建分区函数不成功,说数据库中已存在名为 &amp;amp;#39;pf_eva_date&amp;amp;#39; 的对象。

问题描述 创建分区函数不成功,说数据库中已存在名为 'pf_eva_date' 的对象. use food go create partition function pf_eva_date(datetime) as range left for values(2012) --创建分区方案 create partition scheme ps_eva_date as partition pf_eva_date to(datagroup1,datagroup2) --创建分区表 CREATE TAB