【问题标题】:Select data for last X month from table with year and month separated in different coloumns从表中选择上 X 个月的数据,年月在不同的列中分隔
【发布时间】:2013-09-24 18:21:39
【问题描述】:

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

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

感谢您的每一个回复...

【问题讨论】:

    标签: sql select


    【解决方案1】:
    WHERE (year = @yearfrom AND month >= @monthfrom or year > @yearfrom) 
    AND (year = @yearto AND month <= @monthto or year < @yearto)
    

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多