一段时间内的价值观

时间:2013-08-06 14:41:43

标签: sql date reporting-services parameters

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

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

干杯。

1 个答案:

答案 0 :(得分: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

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