2014-01-14 2 views
0

В этом отчете агрегируются данные из верхней части по неделям в дни, используя развертку. Теперь я просто извлекаю детали даты со дня, чтобы я мог группироваться на столах, и он прекрасно работает , но, первый день недели установлен на 7 или в воскресенье, и мне нужно, чтобы он начинался с 1 , или в понедельник. Очевидное решение, которое я прочитал, - SET DATEFIRST 1 - кстати, когда я пытаюсь использовать SET, я получаю сообщение об ошибке, подтверждающее, что он не поддерживаетсяSSRS 2008 R2 Измените первый день недели на понедельник

Я читал, что вы можете изменить глобальные настройки отчета, чтобы сделать это - но я понятия не имею, где и предпочел бы иметь возможность сделать это локально в этом запросе, если это возможно. Кроме того, я возился вокруг с @@DATEFIRST, но все это делает, конечно, отчет о том, что первый день недели 7.

SELECT  DATENAME(week, CAST(Date AS date)) AS week, DATENAME(dw, CAST(Date AS date)) AS day, CONVERT(date, Date, 103) AS date, FROM_NUMBER, DURATION, 
        TYPE_OF_CALL, ID, DATEPART(dw, CAST(Date - 1 AS date)) AS dayCode 
FROM   CallCenterStatsCDR 
WHERE  (Date BETWEEN @StartDate AND @EndDate) 
GROUP BY DATENAME(week, CAST(Date AS date)), CONVERT(date, Date, 103), DATENAME(dw, CAST(Date AS date)), FROM_NUMBER, DURATION, TYPE_OF_CALL, ID, 
        DATEPART(dw, CAST(Date - 1 AS date)) 
ORDER BY Date DESC 
+0

Что произойдет, если вы попробуете установить дату сначала самостоятельно? Вот так >>> SELECT @@ DATEFIRST; SET DATEFIRST 1; SELECT @@ DATEFIRST; –

+0

SET нигде не разрешен, SQL не будет анализировать – nbpeth

ответ

1

DATEFIRST функция будет влиять на все процессы, протекающие на сервере. Не могли бы вы указать DateAdd (dd, 1, YourDate) все поля даты в запросе, чтобы получить тот же результат?

+0

отличное решение, спасибо. Я добавил это в свой недельный столбец - DATENAME (неделя, DATEADD (dd, - 1, CAST (Дата даты AS))) ' – nbpeth

Смежные вопросы