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

T-SQL核心语句形式:

SELECT     --指定要选择的列或行及其限定 
[INTO
]     
--INTO子句,指定结果存入新表
FROM 
   
--FROM子句,指定表或视图
[WHERE
]                
--WHERE子句,指定查询条件
[GROUP BY
]          
--GROUP BY子句,指定分组表达式
[HAVING
]               
--HAVING子句,指定分组统计条件
[ORDER BY
[ASC|DESC]]   
--ORDER子句,指定排序表达式和顺序

聚合函数:

COUNT:求组中项数,返回int类型整数。

GROUP BY 子句:指定用来放置输出行的组。指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在
GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。如果 SELECT
子句中包含聚合函数,则计算每组的汇总值。

示例一(Select选择列表中存在聚合函数):

错误的写法:

SELECT U_ID,House_Addrinfo,COUNT(U_ID) AS CX
FROM   YX_ChuShou
GROUP BY U_ID
ORDER BY CX DESC

这条语句出现"选择列表中的列 ‘YX_ChuShou.House_Addrinfo‘ 无效,因为该列没有包含在聚合函数或
GROUP BY 子句中。"的错误提示。

正确的写法:

SELECT U_ID,min(House_Addrinfo), COUNT(U_ID) AS CX
FROM YX_ChuShou
GROUP BY U_ID
ORDER BY CX DESC

SELECT U_ID,House_Addrinfo,  COUNT(U_ID) AS
CX 
FROM YX_ChuShou 
GROUP BY U_ID ,House_Addrinfo
ORDER BY CX DESC

示例二(Select选择列表中不存在聚合函数):

错误的写法:
select au_fname,au_lname,zip, city,state
from authors
group by city

服务器: 消息 8120,级别 16,状态 1,行 1
列 ‘authors.au_fname‘ 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY
子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 ‘authors.au_lname‘ 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY
子句中。
 
正确的写法:
select au_fname,au_lname,zip, city,state
from authors
group by city,au_lname,au_fname,zip,state

或:
select au_fname,au_lname,zip, city,state
from authors
order by city   
---使用order by 子句进行排序

即指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY
表达式必须与选择列表表达式完全匹配。

小白:因为结果是一个表,所以一般不会出现   select
*,sum(job_id)这么写的,不然sum就一个值,你让它跟谁并列显示一行去?

如果 select job_id,job_desc,sum(max_lvl) from jobs group by
jobs.job_id,job_desc

非要并列显示点什么,那对应列都应写在group by里,确保该列一个值就出现一次, 一个值对应一个sum

有一个列就加进group by一个

时间: 2024-08-10 13:35:25

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

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

今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,通过在百度里面搜索,并亲自动手实现,终于发现问题所在,现在把它记录下来. 语句如下: select [OrderID],[ProductID], min(UnitPrice) as MinUnitPrice into NewDetails FROM [Northwind].[dbo].[Order Details] Group by [OrderID] 执行该语句之后,SQL Server报错如下: "消息 8120,

在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句

在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句 突然看到这个问题,脑袋一蒙,不知道啥意思,后来想想,试图把select里的选项放到后面,问题自然解决! 下面这个就是报“orderdate select shipcountry,sum(shipvia) as totalvia,OrderDate as thefirsttime from orders group by shipcountry,相应的从网上看到其他的朋友也有这样的问题 比如要显示authors表中

sql中的 开窗函数over() 聚合函数 排名函数

开窗函数与聚合函数一样,都是对行的集合组进行聚合计算.它用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列.反正我理解这个函数已经使用好子查询或者是其它方式求得聚合列的值给我合并. 以书中的例子一步一步来介绍,假设要计算所有人员的总数,我们可以执行下面的SQL语句: SELECT COUNT(FName) FROM T_Person 这种方式比较直接,只返回一个聚合列的值,没有任

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  Select 列 into 新表;字符串函数;日期函数 SQL聚合函数 MAX(最大值).MIN(最小值).AVG(平均值).SUM(和).COUNT(数量:记录的条数) 聚合函数对null不计算.如果一行数据都是null,count(*)包含对空值行.重复行的统计. --聚合函数演示 selec

SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行

来自于 https://www.cnblogs.com/OpenCoder/p/6668882.html 我们在写Sql语句的时候没经常会遇到将查询结果行转列,列转行的需求,拼接sql字符串,然后使用sp_executesql执行sql字符串是比较常规的一种做法.但是这样做实现起来非常复杂,而在SqlServer2005中我们有了PIVOT/UNPIVOT函数可以快速实现行转列和列转行的操作. PIVOT函数,行转列 PIVOT函数的格式如下 PIVOT(<聚合函数>([聚合列值]) FOR

Mongodb中数据聚合之基本聚合函数count、distinct、group

在之前的文章<Mongodb中数据聚合之MapReduce>中,我们提到过Mongodb中进行数据聚合操作的一种方式--MapReduce,但是在大多数日常使用过程中,我们并不需要使用MapReduce来进行操作,不然有点杀鸡用牛刀的感觉,在这边文章中,我们就简单说说用自带的聚合函数进行数据聚合操作的实现. Mongodb中自带的基本聚合函数有三种:count.distinct和group.下面我们分别来讲述一下这三个基本聚合函数. (1)count 作用:简单统计集合中符合某种条件的文档数量

Devexpress GridControl中 repositoryItemCheckEdit作为选择列以及作为显示列的使用方法

一.在gridcontrol列表控件中使用单选框作为选择列,这里有两种方式. 方式一:选择gridcontrol控件的Run Designer按钮,添加一列,设置该列的ColumnEdit为checkedit.如下图: 代码如下: private void Form1_Load(object sender, EventArgs e) { try { List<Student> studentList = new List<Student> { new Student() { Sel

Bootstrap select(选择列表)

当您想让用户从多个选项中进行选择,但是默认情况下只能选择一个选项,则使用选择框 1.使用<select>展示列表选项 2.使用multiple="multiple"允许用户选择多个选项 实例: <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> &l

诺基亚XL中Intent.ACTION_VIEW无效的问题

今天测试播放视频的时候,发现在诺基亚XL机型里不能弹出视频应用列表. 我的代码是: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(videoPath), "video/mp4"); startActivity(intent);后来找到了原因,Uri.parse(videoPath)这里出了问题,videoPath是String类型的视频路径,没有"file://&