首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >得到10年前和本年度后10年的结果集

得到10年前和本年度后10年的结果集
EN

Stack Overflow用户
提问于 2014-02-06 19:07:36
回答 2查看 338关注 0票数 1

我想要的东西:,我想要一个结果集,显示出10年前和本年度之后的10年。

示例:今年的是2014年:

代码语言:javascript
复制
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024

我已经尝试过了:,我不是一个很大的SQL家伙,所以请容忍我在这里:

代码语言:javascript
复制
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

有人能帮我吗?我离得很近吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-06 19:14:25

代码语言:javascript
复制
SELECT TOP (21) YEAR(DATEADD(YEAR, number-10, GETDATE())) 
FROM master.dbo.spt_values WHERE type = N'P' ORDER BY number;

很有可能你想用这些数据做些别的事情。例如,可以聚合来自某个表的数据,并将表中找不到的年份包含在此范围内。你可以这样做:

代码语言:javascript
复制
;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;
票数 6
EN

Stack Overflow用户

发布于 2014-02-06 19:12:35

假设您需要从现有的表中获取这些记录:

代码语言:javascript
复制
declare @thisYear int =  year(getdate())

select yourYear
from table1
where yourYear between @thisYear -10 and @thisYear + 10 
      and yourYear <> @thisYear --Assuming you don't need the current year

SQL fiddle demo

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21611776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档