2013-07-02 35 views
2

我嘗試運行SQL查詢(MSSQL 2005)類似如下:了與組SQL查詢錯誤由

select top 20 d_date, date1, date2 
from reestr_calculated 
where reestr_id=2 
group by date2 
order by date2 desc 

,我得到以下錯誤:

Column 'reestr_calculated.d_date' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

有誰知道我該如何處理這個錯誤?

回答

0

當您使用GROUP BY時,多行將「摺疊」爲一行。要確定組中哪些行應顯示,您必須使用聚合函數。

MIN()SUM()或其他。

像這樣:

select top 20 MIN(d_date), MAX(date1), date2 
from reestr_calculated 
where reestr_id=2 
group by date2 
order by date2 desc 

或像這樣:

select top 20 d_date, date1, date2 
from reestr_calculated 
where reestr_id=2 
group by d_date, date1, date2 
order by date2 desc 
+0

!感謝你們! – Konstantinos

3

除非您使用聚合函數,否則SELECT中的所有列名必須存在於GROUP BY中。因此,在group by中加入date1。

0

你被date2分組,這意味着每個date2值返回一行。每個date2值可能有多個d_datedate1值,所以SQL不知道每個值返回哪些值。

由於錯誤的說法,你要麼需要一個聚集函數(MAX()MIN()AVG()等)或包括在該組的其他列BY子句瞭解