往年数据

时间:2014-02-20 14:58:47

标签: sql-server date sql-server-2012

我的表有2列,我想将两个日期参数,即StartDateEnd Date传递给我的存储过程。

假设我将其传递给31-Jan-201420-Feb-2014。在这两个日期之间有将近三个星期,我希望显示三个星期到指定日期和之前三年的数据。

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$ 

1 个答案:

答案 0 :(得分:0)

这可能不是最好的方法,但我会这样做。您没有提到此查询中是否存在任何聚合,因此如果您正在运行总和,则需要更改

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