Sql server 往年数据

Sql server 往年数据,sql-server,date,sql-server-2012,Sql Server,Date,Sql Server 2012,我的表有两列,我想向存储过程传递两个日期参数,即StartDate和End date 假设我通过了2014年1月31日和2014年2月20日的考试。在这两个日期之间有将近三周的时间,我想显示从指定日期的三周到之前三年的数据 Date---------------- Sales(2014)-------- Sales(2013)--------Sales(2012)------ Sales(2011) 20-Feb-2014 100$ 140$

我的表有两列,我想向存储过程传递两个日期参数,即
StartDate
End date

假设我通过了2014年1月31日和2014年2月20日的考试。在这两个日期之间有将近三周的时间,我想显示从指定日期的三周到之前三年的数据

Date----------------  Sales(2014)-------- Sales(2013)--------Sales(2012)------ Sales(2011) 
20-Feb-2014           100$                140$               150$               900$
19-Feb-2014           100$                140$               150$               900$
18-Feb-2014           100$                140$               150$               900$
17-Feb-2014           100$                140$               150$               900$
.
.
.
1-Feb-2014           100$                140$               150$               900$
31-Jan-2014          120$                 150$              123$               200$ 

这可能不是最好的方法,但我会这样做。您没有提到在这个查询中是否会有任何聚合,所以如果您正在运行一个sum,那么这将需要更改

Select [DATE], Sales(2014) ,
(Select  Sales from dbo.table as t_minus_one_year where Year([DATE]) =  Year(@StartDate) - 1) as Sales(2013),
(Select  Sales from dbo.table as t_minus_two_years where Year([DATE]) =  Year(@StartDate) - 2) as Sales(2012),
(Select  Sales from dbo.table as t_minus_three_years where Year([DATE]) =  Year(@StartDate) - 3) as Sales(2011)
from dbo.table as t2014 where date between @StartDate and @Enddate

@ChristoPaisios我想我在问题中看到了
sql server
标记。我使用的是sql server 2012>I want query.Thanks您是否只想包含前几年当月同一天的值(因此,比较星期一和星期日等情况并不重要)?您想如何处理当前/以前年份中存在/不存在的闰日?亲爱的,这不符合要求。我想显示的是前三年的数据,但前三年的所有数据都在指定日期之间。