查询过去12个月的数据,其中年份和月份是单独的列

时间:2016-01-13 16:36:01

标签: sql-server

我试图找出一种方法来查询过去12个完整月份的数据,所以它会在上个月上升并忽略本月。

我在表格有一个日期列之前已经完成了这项工作,但我正在使用的新表格将日期分为两个月和一年的列。

我将如何在SQL Server 2012中解决这个问题?

提前致谢。

示例数据:

CalendarYear    CalendarMonth   TotalSales
2014            3               35.00   
2014            4               220.00  
2015            2               243.00  
2015            5               17.93   
2015            6               216.36  
2015            10              370.93  
2015            12              350.00
2016            1               116.75  
2016            2               13.78   

期望的输出(假设当前时间是2016年2月):

CalendarYear    CalendarMonth   TotalSales
2015            2               243.00  
2015            5               17.93   
2015            6               216.36  
2015            10              370.93  
2015            12              350.00
2016            1               116.75  

2 个答案:

答案 0 :(得分:1)

我认为Day部分始终是本月的第1部分。

WHERE
    CONVERT(DATETIME, CalendarYear + '-' + CalendarMonth + '- 01') >= DATEADD(mm, -12, GETDATE())

以上假设列是字符串。下面我已经完成了一个列为数字的版本。

WHERE
  CONVERT(DATETIME, CAST(CalendarYear AS NVARCHAR(4)) + '-' + CAST(CalendarMonth AS NVARCHAR(2)) + '-01') >= DATEADD(mm, -12, GETDATE())

答案 1 :(得分:0)

您可以将相同的代码/逻辑应用于您想要数据的年份和月份。

 where to_date(year || month, 'YYYYMM') 
   between add_months(trunc(sysdate, 'MM'), -12) and trunc(sysdate)