Sql 不能按年份分组

Sql 不能按年份分组,sql,tsql,Sql,Tsql,初学者SQL问题: 我试着一年一年地做一个小组,我得到了有趣的结果。我正在使用SQLServer2008 首先,我试过了 按approveddate从ida.applications组中选择countapplicationkey、approveddate 按日期获取应用程序计数。然而,我对按年而不是按日申请感兴趣,所以我尝试了 从ida.applications组中选择countapplicationkey、approveddate(按年份approveddate) 执行此操作时,会收到一条错误

初学者SQL问题:

我试着一年一年地做一个小组,我得到了有趣的结果。我正在使用SQLServer2008

首先,我试过了

按approveddate从ida.applications组中选择countapplicationkey、approveddate

按日期获取应用程序计数。然而,我对按年而不是按日申请感兴趣,所以我尝试了

从ida.applications组中选择countapplicationkey、approveddate(按年份approveddate)

执行此操作时,会收到一条错误消息-列“ida.applications.ApprovedDate”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中-

然而,如果我这样做,我会得到结果

从ida.applications组中按yearapproveddate选择countapplicationkey

我得到了结果。我只是想看看哪一年与哪一个计数相匹配,但由于某种原因我不能这样做。有人知道我为什么会有这个问题吗

  select count(applicationkey), 
         year(approveddate) 
    from ida.applications 
group by year(approveddate)
如果不使用聚合,分组依据必须与select中的字段匹配


如果不使用聚合,group by必须与select中的字段相匹配。

您有所有正确的部分,只需将yearapproveddate包含在select中即可

select count(applicationkey), year(approveddate)
from ida.applications
group by year(approveddate)

你有所有正确的部分,只需在你的选择中包括yearapproveddate,就像这样

select count(applicationkey), year(approveddate)
from ida.applications
group by year(approveddate)

在组查询中,选定的列必须是聚合函数或显示在group by列表中,否则SQL将不知道组中的列要使用多个值中的哪一个

您可以使用

select  count(applicationkey) , year(approveddate)
from ida.applications group by year(approveddate)

-显示的年份来自group by列表在group查询中,所选列必须是聚合函数或显示在group by列表中,否则SQL将不知道要使用组中列的多个值中的哪一个

您可以使用

select  count(applicationkey) , year(approveddate)
from ida.applications group by year(approveddate)

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

您必须根据查询中的任何非聚合列进行分组。如果您按yearapproveddate分组,则需要选择yearapproveddate和NotApprovedAteravi,这是一个一般性的问题提示:您可以将平台sql server和版本sql-server-2008作为标记包含在问题中。您在问题中陈述了它们,这已经让您领先于许多提问者,但首选的方法是将它们作为标记包含。您可以通过单击原始问题下的“编辑”一词来完成此操作:您必须按查询中的任何非聚合列进行分组。如果您按yearapproveddate分组,则需要选择yearapproveddate和NotApprovedAteravi,这是一个一般性的问题提示:您可以将平台sql server和版本sql-server-2008作为标记包含在问题中。您在问题中陈述了它们,这已经让您领先于许多提问者,但首选的方法是将它们作为标记包含。您可以通过单击原始问题下的“编辑”一词来完成此操作: