2009-09-22 91 views
1

我想根據日期查找會計月和年。 如何使用TSQL來完成這項工作?使用tsql進行財務計算

我的SQL Server 2008

任何幫助嗎?

問候 Manjot

+0

您的財政年度何時開始? – 2009-09-22 23:23:15

+0

我不認爲這是內置的,所以你將不得不計算它。由於我不知道「財政月」或「財政年度」是什麼,您必須定義它。 – 2009-09-22 23:23:42

+0

我的財政月份從4月1日開始。 不確定一年。 我想找到財年和四季。 你是否也看到記錄財年的人?我只是想記錄它,但它不是neccessday(如果我不能計算它:-))。你會建議什麼? – Manjot 2009-09-22 23:46:58

回答

1

您存儲與您的組織相關的會計年度和月份的日期和列(會計月度和年度因組織而異)的日期(每天一行)。

作爲一個規則,SQL查找數據而不是計算它要好得多。下個世紀的會計日曆表會佔用少量的數據,並節省計算週期的音調。

+0

感謝您的支持。 但是,如果我有一個日期,我怎麼能找到財政季度或月份? 只需爲quater添加1並在月份添加3? 今年呢? – Manjot 2009-09-22 23:49:27

+0

您有季度和月份以及您感興趣的任何其他財務期的列,直至一週(零售通常有特殊的周)。您絕不會添加或減少任何東西,只需查找日期並查看它屬於哪個財政年度,月份和季度即可。 – 2009-09-22 23:57:21

1

你應該定義你的財政年度表,並建立基於該查詢。試圖在TSQL中做一些棘手的事情只會給你帶來噩夢。

1

我與許多SSRS報告有同樣的問題,因爲我們有一個8月份的財政年度的大學,所以我創建了一個查詢,該查詢將採用本週的開始日期並確定它在哪一年。在此示例中我用Getdate()代替。

SELECT 
(CASE 
    WHEN DatePart(MM,(cast(floor(cast(DATEADD(dd,((DATEPART(dw,GetDate()))-1)*-1,GetDate()) as float)) as datetime))) < 8 
       THEN DATEPART(Year,GetDate()) 
    ELSE DATEPART(Year,GetDate())+1 
END) AS FinYear, 

(CASE 
    WHEN DATEPART(wk,GetDate()) - DATEPART(wk,CAST(CAST(DATEPART(yy,GetDate()) AS Char)+'-08-01' AS Datetime)) > 0 
       THEN DATEPART(wk,GetDate()) - DATEPART(wk,CAST(CAST(DATEPART(yy,GetDate()) AS Char)+'-08-01' AS Datetime)) 
    ELSE DATEPART(wk,GetDate()) - DATEPART(wk,CAST(CAST(DATEPART(yy,GetDate()) AS Char)+'-08-01' AS Datetime)) + 52 
END) As FinWeek 

它的工作,但仍然只有這樣,如果有周其主要表現在下一財年將不會調整爲能夠在一週的開始日期工作的缺點。請注意,你說花了15美元才能拿到ISO標準日曆周...