我最近向SSRS部署了一份报告,该报告每个月都会生成上个月的结果报告。
我首先动态生成变量,确定生成报告结果的月份/年份:
DECLARE @ReportingMonth int
SET @ReportingMonth = MONTH(GETDATE()) - 1
DECLARE @ReportingYear int
SET @ReportingYear = YEAR(DATEADD(MONTH,-1,GETDATE()))
然后,在where子句中,我只是过滤MONTH(DateColumn)= @ReportingMonth和YEAR(DateColumn)= @ReportingYear
的结果我报告的第一个月是10月,结果是9-2016。我包括一个我使用
的字段CAST(@ReportingMonth AS nvarchar)+'-'+CAST(@ReportingYear AS nvarchar) [Report Period]
验证结果。我刚刚在本地再次运行报告,因为它现在是11月,@ ReportingMonth应该= 10. @ReportingMonth仍然设置为= 9。我将数据源查询直接复制/粘贴到SSMS中以检查我是否发生了一些错误,并且没有 - 当查询直接执行时,结果返回10-2016。
我之前看到SSRS中的本地报告运行发生了奇怪的缓存结果,并且删除了.rdl.data文件,然后重新运行过去总是解决了这种问题。在这里多次尝试没有运气。
SSRS还可以根据第一个月的运行来缓存这些变量吗?