我想要的东西:,我想要一个结果集,显示出10年前和本年度之后的10年。
示例:今年的是2014年:
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024我已经尝试过了:,我不是一个很大的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有人能帮我吗?我离得很近吗?
发布于 2014-02-06 19:14:25
SELECT TOP (21) YEAR(DATEADD(YEAR, number-10, GETDATE()))
FROM master.dbo.spt_values WHERE type = N'P' ORDER BY number;很有可能你想用这些数据做些别的事情。例如,可以聚合来自某个表的数据,并将表中找不到的年份包含在此范围内。你可以这样做:
;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;发布于 2014-02-06 19:12:35
假设您需要从现有的表中获取这些记录:
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 yearSQL fiddle demo
https://stackoverflow.com/questions/21611776
复制相似问题