之間的財務年度返回清單也許我正在克服這一點,但我有點難住。從日期範圍
我試圖按財政年度按月歸總數據,每個財政年度返回一行,每個月都有一列。
我可以輕鬆地每月返回一列,但是試圖返回財政年度,因爲行被證明是最困難的部分。
我的理論是,一旦我有選擇作爲行財政年度,我可以簡單地加入到這個金融年/月總結出了子查詢,給我1元1
麻煩的是本財政年度開始8月1日。查詢的日期範圍可以從1個財政年度到可能跨越5年的日期範圍。
舉例來說,如果我有時間範圍從01/08/2013-31/07/2014,我想財政年度爲返回:
2013/2014
如果我有時間範圍從01/08/2012-31/07/2014,我想下面的返回財政年度:
2012/2013
2013/2014
如果我有時間範圍從01/01/2012-28/08/2014,我想希望以下退回財政年度:
2011/2012
2012/2013
2013/2014
2014/2015
這是我迄今爲止的工作,但它不能按預期工作。
DECLARE @DateFrom datetime, @DateTo datetime
SET @DateFrom = '2011-08-01'
set @DateTo = '2014-07-31'
; with FinYr as
(
select @DateFrom as AllDate, @DAteTo as EndDate, case when datepart(MONTH, @DateFrom) < 8 then convert(varchar(4),datepart(year, @DateFrom)-1)+'/'+convert(varchar(4),datepart(year, @DateFrom)) else convert(varchar(4),datepart(year, @DateFrom))+'/'+convert(varchar(4),datepart(year, @DateFrom)+1) End as FinYear
union all
select dateadd(year,1,AllDate) as AllDate, dateadd(year,1,EndDate) as EndDate,case when datepart(MONTH, dateadd(year,1,AllDate)) < 8 then convert(varchar(4),datepart(year, dateadd(year,1,AllDate))-1)+'/'+convert(varchar(4),datepart(year, dateadd(year,1,AllDate))) else convert(varchar(4),datepart(year, dateadd(year,1,AllDate)))+'/'+convert(varchar(4),datepart(year, dateadd(year,1,AllDate))+1) End as FinYear
from FinYr
where dateadd(year,-1,EndDate) <= convert(datetime,(convert(varchar(4),year(@Dateto))+'-07-31'))
)
select AllDate,EndDate, FinYear
from FinYr
你能後的DDL和FinYr一些示例數據? – 2014-08-28 14:10:48
FinYr不是來自dbase的數據,它是一個遞歸函數。 – OWSam 2014-08-28 14:14:15
哦好悲傷....我需要更多的咖啡統計! – 2014-08-28 14:18:31