ls0*_*009 0 sql sql-server-2008
这是问题,我想在表格中显示一列的月份,计数和平均值,但是当我尝试按月分组时,我一直收到错误.
这是代码:
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)
Run Code Online (Sandbox Code Playgroud)
但这会导致错误:
[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.
Run Code Online (Sandbox Code Playgroud)
但是如果我把它MONTH()从组中移除......它工作得很好..但我需要按月分组,否则我得到同一个月的多个不算一个.
对不起,我做了搜索,并且有很多答案,但就像我说我是菜鸟,他们并没有真正帮助我,因为我不明白为什么会这样.
您必须拥有所有不在聚合中的列GROUP BY.您可以将DATENAME列添加到GROUP BY查询中,也可以将其从查询中删除.
GROUP BY MONTH(ContractDate) AS Q, DATENAME(month, ContractDate)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7442 次 |
| 最近记录: |