【问题标题】:SSRS using Subtract Function in FiltersSSRS 在过滤器中使用减法函数
【发布时间】:2017-06-02 16:38:48
【问题描述】:
我正在创建一个显示每月绩效的报告。我有 200101 的历史数据。当我创建和预览报告时,所有数据都显示从 200101 到最近一个月。
我想将月数限制为最近的 13 个月。
我尝试使用这个表达式
=max(Fields!month.Value)-13
这不起作用并显示错误。
【问题讨论】:
标签:
sql-server
visual-studio
reporting-services
sql-server-2012
ssrs-2008-r2
【解决方案1】:
DATEADD() 函数呢? (如果我理解你的问题)
=DATEADD(DateInterval.Month,-13,MAX(Fields!Month.Value))
其他选项是在 SSRS 或您的 SQL 中过滤数据。
SSRS 过滤器将在 TODAY 和 DATEADD() 函数之间使用 (=DATEADD(DateInterval.Month,-13,TODAY))
或者在你的 SQL 中过滤:
WHERE Month BETWEEN SELECT DATEADD(MONTH,-13,GETDATE()) AND GETDATE
【解决方案2】:
理想情况下你的表达应该是
=max(Fields!month.Value-100-IFF(Fields!month.Value%100>1,1,88))
100 表示 1 年,1 表示月份;对于月份像 201701 的情况,88 实际上是 100-12,那么你需要你的值是 201512(回到 13 个月)
要进行更多检查,我们确实需要检查我们是否有从 200101 开始的 13 个月数据
=IFF(Fields!month.Value>200201,max(Fields!month.Value-100-IFF(Fields!month.Value%100>1,1,88)),200101)