【发布时间】:2014-01-19 23:06:12
【问题描述】:
我有一条 SQL 语句 (SQL Server Management Studio),我通过仪表板软件将数据传递到 where 语句中。用户可以选择年份(2013 年或现在 2014 年)以及月份(作为数值传递 - 所以 12 月 = 12)。我需要将声明调整为我从他们选择的年/月中获得最后 3 个月的位置。之前b/c的SQL语句只处理2013年的数据,就是这样:
YEAR(Main.ActivityDate) = '@Request.parmYear~'
AND (Month(Main.ActivityDate) Between ('@Request.parmMonth~'-2) and '@Request.parmMonth~')
通常情况下,parmYear = 2013,然后无论他们选择什么月份,它将在当前月份之前 2 个月获取。
现在,b/c 现在是 2014 年 1 月,我需要抓住 2014 年 1 月 + 2013 年 12 月 + 2013 年 11 月。我想知道如何调整语句以使其动态发生。
想法?
【问题讨论】:
-
尝试使用DateAdd函数减少月数
-
对于您使用的 RDBMS,查找日期函数而不是解析年份和月份,只需使用数据数学来减少 3 个月。
标签: sql sql-server where rolling-computation