Sql 为什么我的查询在添加SUM函数时失败?
下面的查询按预期执行,在给定被查询字段的情况下提供预期的输出Sql 为什么我的查询在添加SUM函数时失败?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,下面的查询按预期执行,在给定被查询字段的情况下提供预期的输出 SELECT 1 as SEQ, TERM_DESC as TERM, PRIMARY_COLLEGE_DESC as COLLEGE, LEVEL_GROUPING_CODE as LEVEL_CODE, LEVEL_GROUPING_DESC as LEVEL_DESC FROM SECopy as SE 然而,当我在一个字段上添加SUM函数时,我得到了以下关于TERM_DESC的错误,它甚至与ID_COUNT无关,SU
SELECT 1 as SEQ, TERM_DESC as TERM, PRIMARY_COLLEGE_DESC as COLLEGE, LEVEL_GROUPING_CODE as LEVEL_CODE, LEVEL_GROUPING_DESC as LEVEL_DESC
FROM SECopy as SE
然而,当我在一个字段上添加SUM函数时,我得到了以下关于TERM_DESC的错误,它甚至与ID_COUNT无关,SUM函数用于ID_COUNT
SELECT 1 as SEQ, TERM_DESC as TERM, PRIMARY_COLLEGE_DESC as COLLEGE, LEVEL_GROUPING_CODE as LEVEL_CODE, LEVEL_GROUPING_DESC as LEVEL_DESC, SUM(ID_COUNT) as HEADCOUNT
from SECopy as se
我得到以下错误:
Column 'Student_Enrollment_copy.TERM_DESC' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
为什么只有在添加SUM函数后才会失败?您需要粘贴SELECT语句中的任何字段,但这些字段不是由SUM、AVG、MIN等聚合的。。。按子句分组:
SELECT
1 AS SEQ,
TERM_DESC AS TERM,
PRIMARY_COLLEGE_DESC AS COLLEGE,
LEVEL_GROUPING_CODE AS LEVEL_CODE,
LEVEL_GROUPING_DESC AS LEVEL_DESC,
SUM(ID_COUNT) AS HEADCOUNT
FROM SECopy AS se
GROUP BY
TERM_DESC, PRIMARY_COLLECT_DESC,LEVEL_GROUPING_CODE,LEVEL_GROUPING_DESC
您需要粘贴SELECT语句中的任何字段,但这些字段不是通过SUM、AVG、MIN等进行聚合的。。。按子句分组:
SELECT
1 AS SEQ,
TERM_DESC AS TERM,
PRIMARY_COLLEGE_DESC AS COLLEGE,
LEVEL_GROUPING_CODE AS LEVEL_CODE,
LEVEL_GROUPING_DESC AS LEVEL_DESC,
SUM(ID_COUNT) AS HEADCOUNT
FROM SECopy AS se
GROUP BY
TERM_DESC, PRIMARY_COLLECT_DESC,LEVEL_GROUPING_CODE,LEVEL_GROUPING_DESC
不需要表的别名
应该使用GROUPBY子句中的所有列,聚合函数除外
不需要表的别名
应该使用GROUPBY子句中的所有列,聚合函数除外
您需要向查询中添加分组条件 在SQL server和许多其他SQL RDBMS中,聚合函数需要定义分组列:
select ...., sum(...) ... -- Fields, expresions and (aggregate) functions
from your_table -- and / or data sources
-- any where conditions
group by ... --- Grouping criteria
您需要向查询中添加分组条件 在SQL server和许多其他SQL RDBMS中,聚合函数需要定义分组列:
select ...., sum(...) ... -- Fields, expresions and (aggregate) functions
from your_table -- and / or data sources
-- any where conditions
group by ... --- Grouping criteria
根据您的实际需要,您可能正在寻找
SELECT
1 as SEQ
, TERM_DESC as TERM
, PRIMARY_COLLEGE_DESC as COLLEGE
, LEVEL_GROUPING_CODE as LEVEL_CODE
, LEVEL_GROUPING_DESC as LEVEL_DESC
, (SELECT SUM(ID_COUNT) FROM SECOPY) as HEADCOUNT
from SECopy
根据您的实际需要,您可能正在寻找
SELECT
1 as SEQ
, TERM_DESC as TERM
, PRIMARY_COLLEGE_DESC as COLLEGE
, LEVEL_GROUPING_CODE as LEVEL_CODE
, LEVEL_GROUPING_DESC as LEVEL_DESC
, (SELECT SUM(ID_COUNT) FROM SECOPY) as HEADCOUNT
from SECopy
任何不在总和中的字段都必须在GROUP by中。我不确定,但我认为这是因为没有GROUP by。我认为添加聚合函数会迫使开发人员添加GROUPBY子句。可以尝试在字段上执行group by吗?AFAIK SQL Server在使用聚合函数时需要group by。有一些像MySQL这样的RDBMS会跳过这个要求。任何不在聚合中的字段,比如sum,都必须在GROUP by中。我不确定,但我认为这是因为没有GROUP by。我认为添加聚合函数会迫使开发人员添加GROUPBY子句。可以尝试在字段上执行group by吗?AFAIK SQL Server在使用聚合函数时需要group by。有些像MySQL这样的RDBMS跳过了这一要求