我有一份SSRS报告,它会按照按周细分的VDI池返回唯一的登录计数.例如,对于1月,它将显示:
Week # of Logins
2015_JANUARY_WEEK_NO_1 3
2015_JANUARY_WEEK_NO_2 49
Run Code Online (Sandbox Code Playgroud)
我正在使用"周"列链接到另一个报告,该报告将显示所选周的登录信息,因此我必须获取所选周的第一天和选择周的最后一天,并将其作为参数传递给其他报告.
我知道如何从周专栏中获取年份和周数#.
=Mid(Fields!Week.Value,1,4)
Run Code Online (Sandbox Code Playgroud)
给了我一年和
=Trim(Mid(Fields!Week.Value,Len(Fields!Week.Value),Len(Fields!Week.Value)))
给了我一周.
我发现这个T-SQL有效:
DECLARE @WeekNum INT
, @YearNum char(4);
SELECT @WeekNum = 2
, @YearNum = 2015
-- once you have the @WeekNum and @YearNum set, the following calculates the date range.
SELECT DATEADD(wk, DATEDIFF(wk, 6, '1/1/' + @YearNum) + (@WeekNum-1), 6) AS StartOfWeek;
SELECT DATEADD(wk, DATEDIFF(wk, 5, '1/1/' + @YearNum) + (@WeekNum-1), 5) AS EndOfWeek;
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何把它变成一个不会抛出错误的表达式.
这是我到目前为止所得到的:
=DateAdd("w", DateDiff("w", 6, '1/1/' + (Mid(Fields!Week.Value,1,4))) + (Trim(Mid(Fields!Week.Value,Len(Fields!Week.Value),Len(Fields!Week.Value)))
- …Run Code Online (Sandbox Code Playgroud)