我需要创建一个仅检查前12个月的报告。我有这个代码正在运行:
DECLARE @date DATETIME = DATEADD(year,-1,GETDATE())
WHILE @date < GETDATE()
BEGIN
--do marvelous things
SET @date = DATEADD(MONTH,1,@date)
END
...然而,它从2014年6月开始带来了结果(显然是今天的2015年6月)。
我希望代码能够从2015年6月开始带回结果,然后再回到2014年6月,但我不确定如何做到这一点......
使用的是SQL Server 2012。
答案 0 :(得分:0)
在查询中使用ORDER BY
子句。例如:
select * from your_table where date_col between @start_date and @end_date order by date_col desc;
ASC
或DESC
可用于以升序或降序显示结果。
因为,您正在循环SQL
查询。然后,
更改
DECLARE @date DATETIME = DATEADD(year,-1,GETDATE())
到
DECLARE @date DATETIME = DATEADD(year,0,GETDATE()) // Current Year
并且
SET @date = DATEADD(MONTH,1,@date)
到
SET @date = DATEADD(MONTH,-1,@date) // substracting one month after each iteration.
答案 1 :(得分:0)
DECLARE @date DATETIME = GETDATE()
WHILE @date > DATEADD(year,-1,GETDATE())
BEGIN
--do marvelous things
SET @date = DATEADD(MONTH,-1,@date)
END