不能按年分组

时间:2014-09-26 14:54:57

标签: sql tsql

初学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)

我得到了结果。只是我希望能够看到哪一年匹配到哪个计数,这是我出于某种原因无法做到的。有谁知道我为什么会遇到这个问题?

3 个答案:

答案 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)

- 显示的年份来自按列表分组