SQL Query用于生成未来的会计年度

时间:2016-05-25 17:03:04

标签: sql sql-server reporting-services

我需要编写SQL查询,这将为我提供2015年10月1日的所有会计年度。所以现在它应该返回2016年,在2016年1月10日之后,查询应该返回2016年,2017年。与10/01/2017之后相同,查询应该返回2016,2017,2018。我很难想出来此Query的任何逻辑。我需要将查询作为SSRS报告的参数。  任何帮助表示赞赏。非常感谢你

2 个答案:

答案 0 :(得分:1)

您可以生成一个列表,使用递归查询指定开始和结束,如下所示:

with cte(YR) 
as(select cast('10/1/2016' as date) as YR
   union all
   Select dateadd(year, 1, YR)
   from cte
   where YR < cast('10/1/2020' as date)
)    

select * from cte;

答案 1 :(得分:0)

所以这就是我根据莫的建议提出的。

declare @curMonth int
set @curMonth = datepart(month, getdate()); 

with cte(YR)
as(select cast('10/1/2016' as date) as YR
   union all
   Select dateadd(year, 1, YR)
   from cte
   where YR < case 
        when @curmonth >= 10
        then dateadd(year, 1, getdate())
        else cast(getdate() as date)
        end
)    

select datepart(year,YR) as YR from cte;

感谢Mo2和John Cappeliti的回答。