2

在我的 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)。

任何建议如何解决这个问题?!?!?

感谢每一个回复...

4

1 回答 1

1
WHERE (year = @yearfrom AND month >= @monthfrom or year > @yearfrom) 
AND (year = @yearto AND month <= @monthto or year < @yearto)
于 2013-09-24T09:45:13.707 回答