2014-01-20 85 views
0

我試圖顯示某段時間內引用的引用數量,對每個引用進行總和預測,並由創建引用的人員對它們進行分組。下面是我的查詢......但我認爲我正在做一些錯誤的小組,但我不知道是什麼。我正在使用標準的SQL 2008.任何幫助將不勝感激。SQL查詢分組遇到問題

SELECT 
    CAST(COUNT (DISTINCT QUOTES.Quote) AS SQL_CHAR) AS Number_of_Quotes, 
    SUM(Forecast) AS Amount_Forecast, 
    quotes.createdby 
FROM 
    Quotes 
WHERE 
    quotes.created>=? AND quotes.created<=? 
Group by 1 
+0

你可以把表結構,有些刀片進行測試?我在你的SQL中看不到錯誤 –

+0

如果'createdby'是你的第一列,它應該可以工作。 – Mihai

回答

1

您需要通過子句中使用createdby你的小組

SELECT 
    CAST(COUNT (DISTINCT QUOTES.Quote) AS SQL_CHAR) AS Number_of_Quotes, 
    SUM(Forecast) AS Amount_Forecast, 
    quotes.createdby FROM Quotes 
WHERE 
    quotes.created>=? AND quotes.created<=? 
Group by createdBy 
2

你的錯誤是由於這樣的事實,你是一個聚合分組。您可以按列編號分組,但您的第一列包含count()。

您可以將1更改爲3,也可以使用列名稱。

+0

事實並未體現 –

0

GROUP BY子句中,您必須包含SELECT子句中的列。

如果你想要聚合由誰創造了它的預測,你應該做的像@Sachin@Dan Bracuk建議:

SELECT 
    CAST(COUNT (DISTINCT QUOTES.Quote) AS SQL_CHAR) AS Number_of_Quotes, 
    SUM(Forecast) AS Amount_Forecast, 
    quotes.createdby 
FROM quotes 
WHERE 
    quotes.created>=? AND quotes.created<=? 
GROUP BY quotes.createdby 

SELECT 
    CAST(COUNT (DISTINCT QUOTES.Quote) AS SQL_CHAR) AS Number_of_Quotes, 
    SUM(Forecast) AS Amount_Forecast, 
    quotes.createdby 
FROM quotes 
WHERE 
    quotes.created>=? AND quotes.created<=? 
GROUP BY 3 --equivalent because createdBy is the 3º column on the select clause