我想在SQL中计算执行以下操作的值:
如果用户输入的月份参数(我正在编写SQL以首先聚合信息然后使用SSRS)是今天过去90天或更长时间(或最近的数据条目),则使用该月的值。否则,如果month参数在报告运行日期(或最近的数据条目)的90天内,请使用事实上90天过去的最新值。例如,如果我在八月份运行报告并将月份参数指定为八月,我将需要五月份的值。如果我将月份参数指定为4月份,那么我想要4月份的价值,因为从那以后90天已经过去了。如果这不简洁,请道歉。我只想指点方向。
干杯。
答案 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
更新第一条语句以满足您的要求;在这一点上他们似乎有点模棱两可 - 如果我还没有完全理解这个问题,那就道歉了。