初学SQL问题:
我试图按年份分组,而且我得到了有趣的结果。我正在使用SQL Server 2008。
首先,我试过
select count(applicationkey) , approveddate from ida.applications group by approveddate
按日期计算申请数。但是,我对应用程序感兴趣而不是一天,所以我尝试了
select count(applicationkey) , approveddate from ida.applications group by year(approveddate)
当我这样做时,我收到一条错误消息-Column" ida.applications.ApprovedDate'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.-
但是,如果我这样做,我会得到结果
select count(applicationkey) from ida.applications group by year(approveddate)
我得到了结果。只是我希望能够看到哪一年匹配到哪个计数,这是我出于某种原因无法做到的。有谁知道我为什么会遇到这个问题?
答案 0 :(得分:2)
select count(applicationkey),
year(approveddate)
from ida.applications
group by year(approveddate)
如果不使用聚合,则 group by
必须与select
中的字段匹配。
答案 1 :(得分:1)
您拥有所有正确的部分,只需在您的选择中包含year(approveddate)
select count(applicationkey), year(approveddate)
from ida.applications
group by year(approveddate)
答案 2 :(得分:1)
在组查询中,所选列必须是聚合函数或显示在分组列表中,因为否则SQL无法知道组中列的多个值中的哪一个要使用。
您可以使用
轻松修复查询select count(applicationkey) , year(approveddate)
from ida.applications group by year(approveddate)
- 显示的年份来自按列表分组