Вы можете попробовать следующее
SELECT DatePart(year , [TimeEntryDate]) [YEAR],
DatePart(ww , [TimeEntryDate]) Week,
DATEADD(d, 7 - DATEPART(DW, [TimeEntryDate]), [TimeEntryDate]) as WeekEnding,
CategoryId,
SUM(TimeEntryDuration) "Total Hours"
FROM [TIMETRACKER].[dbo].[aspnet_starterkits_TimeEntry]
GROUP BY DatePart(year , [TimeEntryDate]), DatePart(ww , [TimeEntryDate]) , CategoryId
ORDER BY 1,2,3
РЕДАКТИРОВАТЬ: Настройки даты начала зависят от ваших языковых настроек.По умолчанию в США используется английский язык 7, воскресенье, но вам необходимо проверить свои настройки и соответствующим образом скорректировать расчет.Вы можете проверить свои настройки, чтобы определить, какой день является началом недели, с помощью
SELECT @@DATEFIRST;
Этот запрос иллюстрирует разницу:
SET LANGUAGE Italian;
GO
SELECT @@DATEFIRST;
GO
SET LANGUAGE us_english;
GO
SELECT @@DATEFIRST;
Вы также можете установить дату начала своей недели какследует.
SET DATEFIRST 1