2014-09-26 136 views
0

初學者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包含clause.-

但是,如果我這樣做,我得到的結果

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

我得到的結果。它只是我希望能夠看到哪一年符合哪個計數,這是我因爲某些原因而無法完成的。有誰知道我爲什麼有這個問題?

+0

您必須在您所查詢的任何非聚集列組。如果你按年份分組,那麼你需要選擇'year(approveddate)'而不是'approvedate' – LittleBobbyTables 2014-09-26 14:57:17

+0

Ravi,一個普通的問題提示提示:你可以包括諸如platform(sql-server)和version sql-server-2008)作爲標籤在你的問題。你在你的問題中提到了它們,這已經讓你領先於很多提問者,但首選的方法是將它們作爲標籤包含在內。您可以通過點擊原始問題下的「編輯」一詞來完成此操作:) – AHiggins 2014-09-26 15:10:03

回答

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

group by必須如果不使用聚合匹配select領域。

1

你都正確的零件在那裏,只是在您選擇的year(approveddate)像這樣

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

在組查詢,選中的列必須是集合函數,或者出現在group-by列表中,因爲否則SQL將不知道要使用的組中的列的多個值中的哪一個。

您可以通過使用

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

輕鬆解決您的查詢 - 這是今年顯示爲GROUP BY列表