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

时间:2018-05-08 04:40:31

标签: sql-server reporting-services

我们假设一周从周一开始,到周日结束。 在尝试与去年进行比较时,我们如何才能获得正确的约会? 例如,如果我想比较本周(2017年10月23日至10月29日)与同一周(2016年10月24日至2016年10月30日)

我在SSRS BeginDate和BeginDateLastYear中设置了2个参数。 BeginDate的值= 10/23/2017 我怎样才能将BeginDateLastYear的值假设为去年同一周数的星期一(在这种情况下应该是2016年10月24日)?

目前我正试图在去年设置StartDate的值,如

BeginDateLastYear =DATEADD(DateInterval.Year,-1,Parameters!BeginDate.Value)

我也尝试使用

 =DATEADD(DateInterval.Week,-52,Parameters!BeginDate.Value) , but not very sure will this work precisely to same week start date of last year

1 个答案:

答案 0 :(得分:1)

在报告服务中,您可以对BeginDateLastYear

使用以下表达式
select

代码逻辑:

如果回到52周两周的数字不匹配则回到53周,否则回到52周

如果你想在不使用第二个参数的情况下在SQL中实现它(SSRS在级联参数上有一些问题)

= DATEADD(
    DateInterval.WeekOfYear, 
    IIF( 
        DATEPART(DateInterval.WeekOfYear,DATEADD(DateInterval.WeekOfYear, -52   ,  Parameters!BeginDate.Value))<> DATEPART(DateInterval.WeekOfYear, Parameters!BeginDate.Value) , 
        -53, 
        -52 
        ) ,  
    Parameters!BeginDate.Value
    )