在我的 SQL Server 上,我有一个包含大量数据的表。年份 (smallint) 和月份 (tinyint) 有两列。
分离过去 X 个月的数据的最佳和最有效的方法是什么。
我已经声明了变量
- @YearFrom
- @YearTo
- @MonthFrom
- @MonthTo
具有正确的值。现在我意识到我的 WHERE 语句没有按预期工作:
WHERE (year >= @yearfrom AND month >= @monthfrom)
AND (year <= @yearto AND month <= @monthto)
因为在选择过去 12 个月的数据时,我的变量是
- @YearFrom = 2012
- @YearTo = 2013
- @MonthFrom = 9
- @MonthTo = 9
SELECT 只会给我 2012/2013 年 9 月的数据
WHERE (year >= 2012 AND month >= 9)
AND (year <= 2013 AND month <= 9)
所以,实际上有两种可能来解决这个问题:
- 第一个变量 X 上个月 @lastMonth = 12
- 或使用我声明的 4 个辅助变量(yearfrom、yearto、monthfrom、monthto)。
任何建议如何解决这个问题?!?!?
感谢每一个回复...