【问题标题】:Previous Years Data往年数据
【发布时间】:2014-03-21 14:41:14
【问题描述】:

我的表有 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$ 

【问题讨论】:

  • @ChristosPaisios 我想我看到sql-server 标记在问题中。
  • 我正在使用 sql server 2012>我想要查询。谢谢
  • 您是否只想包含前几年一个月中同一天的值(因此,您比较周一和周日并不重要)?您想如何处理当前/前几年存在/不存在的闰日?

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


【解决方案1】:

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

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

【讨论】:

  • 亲爱的不是按照要求。我想要的是显示前三年的数据,但是前三年的所有数据都在指定的日期之间。
猜你喜欢
  • 1970-01-01
  • 2016-01-01
  • 2016-10-27
  • 2020-01-17
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
相关资源
最近更新 更多