2016-05-27 82 views
2

我想編寫一個查詢來算在我的數據庫中的每個日期,你可以在這裏看到:GROUP BY在SQL Server中的日期不日期時間

SELECT 
    [SubmitDateTime], 
    COUNT(*) 
FROM 
    [ParkingDB].[dbo].[Traffic] 
GROUP BY 
    submitdatetime 

結果是:

enter image description here

我認爲SQL Server是基於日期+時間對我的日期進行分組的,這是我的問題,但實際上我需要根據日期對它們進行分組。我使用這種類型的查詢:

SELECT 
    [SubmitDateTime], 
    COUNT(*) 
FROM 
    [ParkingDB].[dbo].[Traffic] 
GROUP BY 
    CAST(myDateTime AS DATE) 

但它不起作用。我得到這個錯誤:

Msg 8120, Level 16, State 1, Line 3 Column
'ParkingDB.dbo.Traffic.SubmitDateTime' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

+0

你是什麼意思,它不起作用? –

+0

@FelixPamittan我得到這個錯誤:消息8120,級別16,狀態1,行3 列'ParkingDB.dbo.Traffic.SubmitDateTime'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY條款。 –

+0

下面有兩個工作答案。我建議你標記任何一個作爲答案,以便這個問題將得到解決。謝謝 –

回答

3

您還需要修改列在您的SELECT聲明:

SELECT 
    CAST([SubmitDateTime] AS DATE), 
    COUNT(*) 
FROM [ParkingDB].[dbo].[Traffic] 
GROUP BY 
    CAST([SubmitDateTime] AS DATE) 

當使用GROUP BY子句,SELECT語句中的所有非聚合列必須出現在GROUP BY條款。

+0

謝謝你的工作 –

+0

我想我是一個新的sqlserver,因爲我用EF寫我的查詢。 –

3

你可以嘗試下面的查詢嗎?

SELECT 
     CAST(myDateTime AS DATE) [SubmitDateTime], 
     COUNT(*) 
FROM [ParkingDB].[dbo].[Traffic] 
GROUP BY 
     CAST(myDateTime AS DATE)