sqlserver选择列表中的列 'Book.book_total' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
时间: 2024-05-27 08:12:13 浏览: 241
这个错误是因为 SQL Server 要求在使用聚合函数(如 SUM、AVG、COUNT 等)时,选择列表中的非聚合列必须包含在 GROUP BY 子句中。例如,如果您想计算每个作者的图书总数,您可能会编写以下查询:
SELECT author_name, SUM(book_total)
FROM Book
GROUP BY author_name
在这个查询中,我们使用了聚合函数 SUM(book_total) 来计算每个作者的图书总数,并且在选择列表中选择了 author_name 和 book_total 两列。但是,如果我们不在 GROUP BY 子句中包含 book_total 列,SQL Server 将无法确定该如何处理 book_total 列的值,并返回上述错误。
要解决这个错误,您需要根据需要将非聚合列包含在 GROUP BY 子句中,或者使用聚合函数来计算这些列的值。例如,以下查询将检索每个作者的平均图书价格:
SELECT author_name, AVG(book_price)
FROM Book
GROUP BY author_name
在这个查询中,我们使用了 AVG(book_price) 聚合函数来计算每个作者的平均图书价格,并且在选择列表中选择了 author_name 和 book_price 两列。由于 book_price 列是一个非聚合列,我们需要在 GROUP BY 子句中包含它。
相关问题
选择列表中的列 'score.s_score' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
这个错误通常是在使用 GROUP BY 子句时出现的。在 GROUP BY 子句中,只有列名可以出现,而不能使用表达式或函数。如果您想选择一个聚合函数,例如 SUM 或 AVG,您需要将它们放在 SELECT 子句中,并且必须在 GROUP BY 子句中包含所有未聚合的列名。例如:
SELECT student_id, AVG(score.s_score)
FROM score
GROUP BY student_id;
在这个例子中,我们计算每个学生的平均分数,并将学生 ID 和平均分数作为结果返回。请注意,我们在 GROUP BY 子句中包含了学生 ID,因为它是未聚合的列。
为什么select distinct u.i_ui_identifier,u.nvc_user_name from t_user_info u join t_contact_person c on c.i_user_id = u.i_ui_identifier group by u.nvc_user_name;这个SQL语句报错:[SQL Server]选择列表中的列 't_user_info.i_ui_identifier' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 (8120),怎么解决
根据错误提示,SQL语句中的i_ui_identifier列没有包含在聚合函数或GROUP BY子句中。解决方法是将i_ui_identifier列添加到GROUP BY子句中,或者使用聚合函数对i_ui_identifier列进行聚合。例如,您可以将SQL语句修改为:
```
SELECT DISTINCT u.i_ui_identifier, u.nvc_user_name
FROM t_user_info u
JOIN t_contact_person c ON c.i_user_id = u.i_ui_identifier
GROUP BY u.i_ui_identifier, u.nvc_user_name;
```
这样就可以避免报错了。
阅读全文