2016-05-25 5 views
0

Мне нужно написать SQL-запрос, который даст мне все финансовые годы в будущем 10/01/2015. Так что пока он должен вернуться в 2016 году, после 10/01/2016 запрос должен вернуться в 2016 году, 2017. То же, что и после 10/01/2017, запрос должен быть возвращен 2016,2017, 2018. Я испытываю трудности с появлением любая логика для этого запроса. Мне нужно поставить запрос в качестве параметра для отчета SSRS. Любая помощь приветствуется. Большое спасибоSQL Query для генерации в течение следующих финансовых лет

ответ

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

Спасибо Mo2. Я играю с этой общей логикой, чтобы попытаться заставить ее работать на меня. Я дам вам знать, что я могу использовать. Огромное спасибо! – gemini

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 за ответы.

Смежные вопросы