我试图找出一种方法来查询过去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
答案 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)