SSRS表达式-从周值中查找一周的第一天

迈克·霍顿

我有一个SSRS报告,该报告将按周细分的VDI池返回唯一的登录计数。例如,对于一月份,它将显示为:

     Week                # of Logins  
2015_JANUARY_WEEK_NO_1       3  
2015_JANUARY_WEEK_NO_2       49

我使用“星期”列链接到另一个报告,该报告将显示所选星期的登录信息,因此我必须获取所选星期的第一天和所选星期的最后一天,并将它们作为参数传递给其他报告。

我知道如何从“周”列中获取年份和周号。

=Mid(Fields!Week.Value,1,4) 

给我一年 =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; 

但我不知道如何将其转换为不会引发错误的表达式。

到目前为止,这是我得到的:

=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)))
- 1), 6)

当我尝试在设计视图中运行报表时,它返回一个表达式预期错误。

编辑对不起,我想我应该发布填入报告的原始查询。在下面:

SELECT Convert(varchar(20),UPPER(DATENAME(YEAR, Time)))
    +'_'+CONVERT(varchar(20),UPPER(DATENAME(MONTH, Time)))
    +'_WEEK_NO_'+CONVERT(varchar(10),(DAY(Time) 
    + (DATEPART(DW, DATEADD (MONTH, DATEDIFF (MONTH, 0, Time), 0))-1) -1)/7 + 1) as 'Week'
    , Count(DISTINCT SUBSTRING(ModuleAndEventText,LEN('User ') + 2
    , CHARINDEX(' requested', ModuleAndEventText) - LEN('User ') - 2)) as WeekCount
  FROM VE1_UserLogins
WHERE DesktopId = @Pool
AND ([Time] BETWEEN (@StartDate) and (DATEADD(ms, -1, @EndDate +1)))
GROUP BY Convert(varchar(20),UPPER(DATENAME(YEAR, Time)))
    +'_'+CONVERT(varchar(20),UPPER(DATENAME(MONTH, Time)))
    +'_WEEK_NO_'+CONVERT(varchar(10),(DAY(Time) 
    + (DATEPART(DW, DATEADD (MONTH, DATEDIFF (MONTH, 0, Time), 0))-1) -1)/7 + 1),YEAR(Time),MONTH(Time)
ORDER BY YEAR(Time), MONTH(Time), Week
马赫什

我假设您Fields!Week.Value采用stringdate格式类似MM/dd/yyyy或类似的格式,因此,如果您想将该周的开始Sunday作为第一天和Saturday最后一天,并且想要到达该日期,则应该使用以下表达式,

在一周的开始,

  =DateAdd("d",1-  DatePart("w", CDate(Fields!WeekDate.Value)), CDate(Fields!WeekDate.Value))

在本周末,

=DateAdd("d", 7 - DatePart("w", CDate(Fields!WeekDate.Value)), CDate(Fields!WeekDate.Value))

----------


更新现在有两种方法可以实现您想要的

1)在sql中计算星期的开始和星期的结束,并将结果直接显示在repott上

2)time从sql获取字段并在SSRS中设置表达式

对于第一种实现方法,需要在选择sql语句中添加这两行

    DATEADD(dd, -(DATEPART(dw, MIN(Time))-1),MIN(Time)) AS 'StartOfWeek'
   ,DATEADD(dd, 7-(DATEPART(dw, MIN(Time))), MIN(Time)) AS 'EndOfWeek'

第二种实现方法是更新Sql语句以获取日期部分,然后将该日期包括在上面的给定表达式中。因此,对于您的查询,您需要添加,

        ,MIN(Time) AS WeekDate

然后,您可以将传入字段WeekDate用作输入来使用以上表达式(我已经更新了表达式)。

但是,如果date除了计算一周的开始和结束之外没有其他实际需要,则可以使用第一种方法从格式化后的sql服务器获取数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SSRS表达式-从周值中查找一周的第一天

来自分类Dev

获取每月的第一天(也是最后一天)-简化表达式

来自分类Dev

SSRS表达式,适用于一周的结束日期

来自分类Dev

一周结束日期的SSRS表达式是什么?

来自分类Dev

SSRS表达式,适用于一周的结束日期

来自分类Dev

在 php 中获取一周的第一天/最后一天?

来自分类Dev

TSQL-查找一周的第一天或第二天

来自分类Dev

基于字段值的SSRS表达式

来自分类Dev

SSRS:在计算字段中的表达式

来自分类Dev

SSRS中的条件表达式

来自分类Dev

SSRS 中的日期表达式

来自分类Dev

使用java.time查找一年中最后一周的第一天

来自分类Dev

在 SSRS 中查找去年一周的开始日期

来自分类Dev

Java日历-一周的第一天VS实际最小值

来自分类Dev

在JavaFX的DatePicker中设置一周的第一天

来自分类Dev

在Powershell中如何确定一周的第一天?

来自分类Dev

如何在PostgreSQL中更改一周的第一天

来自分类Dev

从IE中的日历开始一周的第一天

来自分类Dev

如何在Swift中更改一周的第一天

来自分类Dev

如何在sql server 2008中获取一周的第一天和一周的最后一天?

来自分类Dev

一周的第一天和日历周

来自分类Dev

Cron表达式,不包括一周中的特定日期

来自分类Dev

SSRS中的AVG多个查找表达式(Visual Studio)

来自分类Dev

计算一年中第一周的日期的一周的第一天的日期会更改月份

来自分类Dev

Python正则表达式从一行中查找时间,年,周和天

来自分类Dev

SSRS 颜色编码值通过表达式

来自分类Dev

计数表达式中的SSRS多个条件

来自分类Dev

如何在SSRS表达式中显示昨天的日期

来自分类Dev

是否可以对SSRS中的表达式列求和

Related 相关文章

热门标签

归档