2016-05-27 1 views
2

Я пытаюсь написать запрос, чтобы считать каждую дату в моей базе данных, как вы можете увидеть здесь:GROUP BY дата не DateTime в 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 Я получаю эту ошибку: Msg 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)