获得10年前和当年后10年的结果集

Fas*_*ack 1 t-sql sql-server

我想要的是:我想要一个结果集,告诉我10年之前和今年之后的10年.

示例:今年是2014年:

2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Run Code Online (Sandbox Code Playgroud)

我尝试了什么:我不是一个庞大的SQL人,所以请耐心等待我:

SELECT 
YEAR(DATEADD(year, -10, GETDATE())) AS prevYear,
YEAR(DATEADD(year, 10, GETDATE())) AS nextYear,
YEAR(GETDATE()) AS currentYear
WHERE currentYear BETWEEN prevYear AND nextYear
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?我甚至关闭?

Aar*_*and 6

SELECT TOP (21) YEAR(DATEADD(YEAR, number-10, GETDATE())) 
FROM master.dbo.spt_values WHERE type = N'P' ORDER BY number;
Run Code Online (Sandbox Code Playgroud)

您可能希望使用此数据执行其他操作.一个示例可能是聚合来自某个表的数据,并包括此表中未找到的此范围内的年份.这是你如何做到这一点:

;WITH y(d) AS 
(
  SELECT TOP (21) DATEADD(YEAR, number-10, DATEADD(YEAR, YEAR(GETDATE())-1900,0))
  FROM master.dbo.spt_values WHERE type = N'P' ORDER BY number
)
SELECT y.d, COUNT(o.key)
  FROM y 
  LEFT OUTER JOIN dbo.other_table AS o
  ON o.datetime_column >= d.d
  AND o.datetime_column < DATEADD(YEAR, 1, d.d)
GROUP BY y.d
ORDER BY y.d;
Run Code Online (Sandbox Code Playgroud)