SQL选择无效,因为它不包含在聚合函数中
问题描述:
这是问题所在,我想在表格中显示一列的月份,计数和平均值,但当我尝试按月份对它进行分组时, 。SQL选择无效,因为它不包含在聚合函数中
这是代码:
SELECT MONTH(ContractDate) AS Q,
DATENAME(month, ContractDate) AS M,
COUNT(ContractDate) AS C, SUM(ContractPrice) AS S
FROM dashboard
WHERE YEAR(ContractDate) = $year
AND ContractDate IS NOT NULL
AND ContractPrice IS NOT NULL
GROUP BY MONTH(ContractDate)
但是,这将导致错误:
[Microsoft][SQL Server Native Client 10.0][SQL Server]
Column 'dashboard.ContractDate' is invalid in the select
list because it is not contained in either an aggregate
function or the GROUP BY clause.
但是,如果我通过去除来自该组MONTH()
...它工作得很好。但我需要让他们按月分组,否则我得到同一个月的多个不算作一个。
对不起,我做了搜索,并有答案的HEAPS,但就像我说我是noob,他们并没有真正帮助我,因为我不明白为什么发生这种情况。
答
您必须在GROUP BY
中包含所有非聚合的列。您可以将DATENAME
列添加到GROUP BY
或将其从查询中完全删除。
GROUP BY MONTH(ContractDate) AS Q, DATENAME(month, ContractDate)
答
尝试在删除DATENAME(month, ContractDate) AS M
后执行查询。我想这是造成这个问题。您正在执行GROUP BY MONTH(ContractDate)
,但也尝试使用不在GROUP BY
列表中的ContractDate
。
非常感谢你,这很简单......我想我一直在看代码,只是我已经失去了一点想法。 – ls009