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