1

我想在 SQL 中计算一个执行以下操作的值:

如果用户输入的月份参数(我正在编写 SQL 以先聚合信息然后使用 SSRS)是今天过去 90 天或更长时间(或最近的数据输入),则使用该月的值。否则,如果月份参数在报表运行日期(或最近的数据输入)的 90 天内,则使用实际上是过去 90 天的最新值。例如,如果我在八月运行报告并将月份参数指定为八月,我将需要五月的值。如果我将月份参数指定为四月,我想要四月的值,因为从那时起 90 天已经过去了。抱歉,如果这不简洁。我只是想要一些方向。

干杯。

4

1 回答 1

0

正如@DanBracuk 在评论中所建议的那样,您可能应该从 SSRS 获取参数,并根据 T-SQL 代码中的当前日期对其进行更新。

假设您有一个 SSRS 参数Parameters!Month.Value,该参数作为@Month.

您可以使用GETDATE()和日期函数,如DATEDIFF()和根据需要DATEADD()进行调整,例如在存储过程代码中,例如:@Month

select @Month = case when datediff(dd, @Month, getdate()) > 90
  then @Month
  else dateadd(dd, -90, @Month)
  end

select *
from MyTable
where MyDate < @Month

更新第一个语句以满足您的要求;在这一点上他们似乎有点模棱两可 - 如果我没有完全理解这个问题,请道歉。

于 2013-08-06T17:15:41.833 回答