大侠给看看用sql取当前年的前后10年的一个查询,急!

涛声宜旧 2007-01-22 11:37:55
例如今年2007年,用sql取一个查询结果为:

列名A
1998
1999
2000
...
2007
2008
2017
...全文
471 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
涛声宜旧 2007-01-22
  • 打赏
  • 举报
回复
不好意思,没说清楚,是在没有任何表的情况下
rookie_one 2007-01-22
  • 打赏
  • 举报
回复
select A from TABLE where datediff(yy,A,getdate()) between -10 and 10
rookie_one 2007-01-22
  • 打赏
  • 举报
回复
select A from TABLE where datediff(yy,A,getdate())=10 or datediff(yy,A,getdate())=-10
rookie_one 2007-01-22
  • 打赏
  • 举报
回复
以上逻辑麻烦,修改了一下
declare @t1 int,@year1 varchar(4),@year2 varchar(4),@sql varchar(8000)
set @sql=''
set @year1=year(getdate())
set @t1=-10

while @t1>=-10 and @t1<=10
begin
set @year2=@year1+@t1
set @sql=@sql+'select '+@year2+' [year] union all '
set @t1=@t1+1
end

set @sql=substring(@sql,1,len(@sql)-10)+'order by [year] '
print substring(@sql,1,len(@sql)-10)
exec (@sql)
rookie_one 2007-01-22
  • 打赏
  • 举报
回复
declare @t1 int,@t2 int,@year1 varchar(4),@year2 varchar(4),@sql varchar(8000)
set @sql=''
set @year1=year(getdate())
set @t1=0

while @t1<=10
begin
set @year2=@year1+@t1
set @sql=@sql+'select '+@year2+' [year] union all '
set @t1=@t1+1
end

set @t2=-10
while @t2<=-1
begin
set @year2=@year1+@t2
set @sql=@sql+'select '+@year2+' [year] union all '
set @t2=@t2+1
end

set @sql=substring(@sql,1,len(@sql)-10)+'order by [year] '
print substring(@sql,1,len(@sql)-10)
exec (@sql)

-----
year
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧