T-sql核心语句形式:
SELECT
[INTO ]
FROM
[WHERE ]
[GROUP BY ]
[HAVING ]
[ORDER BY [ASC|DESC]]
聚合函数:
COUNT:求组中项数,返回int类型整数。
GROUP BY 子句:指定用来放置输出行的组。指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。如果 SELECT 子句中包含聚合函数,则计算每组的汇总值。
示例一(Select选择列表中存在聚合函数):
错误的写法:
SELECT U_ID,House_Addrinfo,COUNT(U_ID) AS CX
FROM
GROUP BY U_ID
ORDER BY CX DESC
这条语句出现"选择列表中的列 'YX_ChuShou.House_Addrinfo' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。"的错误提示。
正确的写法:
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,state
from authors
group by city,au_fname,zip,state
或:
select au_fname,state
from authors
order by city
即指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。
小白:因为结果是一个表,所以一般不会出现
如果 select job_id,job_desc,sum(max_lvl) from jobs group by jobs.job_id,job_desc
非要并列显示点什么,那对应列都应写在group by里,确保该列一个值就出现一次, 一个值对应一个sum
有一个列就加进group by一个
转自:http://blog.sina.com.cn/s/blog_43eb83b90102e1kf.html