Sql 如何回顾过去的12个月?
我需要创建一份只检查前12个月的报告。我有这个代码,它正在工作:Sql 如何回顾过去的12个月?,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我需要创建一份只检查前12个月的报告。我有这个代码,它正在工作: DECLARE @date DATETIME = DATEADD(year,-1,GETDATE()) WHILE @date < GETDATE() BEGIN --do marvelous things SET @date = DATEADD(MONTH,1,@date) END DECLARE@date DATETIME=DATEADD(year,-1,GETDATE()) 而@date
DECLARE @date DATETIME = DATEADD(year,-1,GETDATE())
WHILE @date < GETDATE()
BEGIN
--do marvelous things
SET @date = DATEADD(MONTH,1,@date)
END
DECLARE@date DATETIME=DATEADD(year,-1,GETDATE())
而@date
……然而,它从2014年6月开始恢复了业绩(显然,今天是2015年6月)
我希望代码能够从2015年6月开始返回结果,然后向后工作到2014年6月,但不知道如何做到这一点
我正在使用SQL Server 2012。在查询中使用
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())
到
及
SET @date = DATEADD(MONTH,1,@date)
到
首先,在SQL中执行操作时,循环通常是错误的方法。SQL是面向集合的,只需一条语句,无需循环,就可以完成奇妙的事情。那么,你到底想做什么?按COL_NAME desc订购
SET @date = DATEADD(MONTH,1,@date)
SET @date = DATEADD(MONTH,-1,@date) // substracting one month after each iteration.
DECLARE @date DATETIME = GETDATE()
WHILE @date > DATEADD(year,-1,GETDATE())
BEGIN
--do marvelous things
SET @date = DATEADD(MONTH,-1,@date)
END