2015-06-02 4 views
0

Я создал один отчет SSRS.добавления столбцов даты в отчете SSRS

В отчете я предоставляю один параметр с именем startDate. С startDate я должен отображать 10 столбцов, таких как week of dd-mon-yy.

Первый столбец содержит дату понедельника в неделю, на которой указана дата начала. то наступают 10 понедельников.

Пример показан на картинке. Как я могу достичь этого в отчетах SSRS. Мне нужно значение запроса и столбца.

enter image description here

+0

В чем главная проблема? получать данные по неделям, начиная с понедельника с недели, которая содержит дату начала? или для поворота данных в SSRS? – CeOnSql

+0

для поворота данных –

ответ

0

Это должно быть имя вашей колонки для текущей недели

select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, datediff(week, 0, getdate()), 0),106); 

тогда псевдоним

select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 1,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 2,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 3,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 4,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 5,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 6,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 7,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 8,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 9,dateadd(week, datediff(week, 0, getdate()), 0)),106); 
0

Чтобы получить дату в понедельник в течение недели, дата начала лежит наряду с датами следующих 10 понедельников вы можете написать запрос, как:

DECLARE @input date 

SET @input = '12/29/2013' 

SELECT 'Week of '+ 
     REPLACE(CONVERT(VARCHAR(11), 
     DATEADD(wk, DATEDIFF(wk,0,@input), T.week*7) 
     , 106), ' ', '-') 
FROM 
(VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8))AS T(week) 

Demo

0

Вы можете использовать это выражение, чтобы получить понедельник в течение недели, дата начала лежит в первую неделю следующей недели:

=Dateadd(DateInterval.Day, 
     (0 * 7) + 1 - DatePart(DateInterval.Weekday, Parameters!startDate.Value, FirstDayOfWeek.Monday), 
     Parameters!startDate.Value) 

На второй неделе:

=Dateadd(DateInterval.Day, 
     (1 * 7) + 1 - DatePart(DateInterval.Weekday, Parameters!startDate.Value, FirstDayOfWeek.Monday), 
     Parameters!startDate.Value) 

И так далее.

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