2015-05-16 76 views
2

我有一個使用VB.NET和SQL Server的軟件。該軟件工作正常,但如果考慮它的問題是新財政年度那麼對於新的一年所有的費用應該從1財務年度更改需要對SQL Server數據庫進行哪些更改?

目前所有的賬單都存儲在一個數據庫表開始,不知道怎麼能這樣已經完成。如果我將表中的這些條目移到另一個臨時表中,則從一個表開始計數,但是依賴於該表的所有函數都顯示錯誤的輸出。

或者是有管理必須考慮財政年度改變軟件的替代方式?

+0

如果您需要控制主鍵值,請不要理解DBENTITY等DB生成的值。在你的應用程序biz邏輯中生成你自己的。 – Dai

+2

您應該有WorkPeriods表,其中包含您的邏輯的有效期。然後在所有的操作表中,您將WorkPerionID,SomeId作爲組合主鍵。 SomeId可以是順序對象,您可以在新週期開始時重置。 –

回答

0

一個選項是在一個分區上做一個行號。您的查詢將看起來像

SELECT billName, 
billAmmount, 
ROW_NUMBER() OVER (
    ORDER BY billDate 
    PARTITION BY (CAST((DATEADD *the offset from calendar year start to fiscal year start* billDate) AS YEAR) 
) AS billNum 
FROM billsTable 

這是做什麼計數賬單日期的順序排,每財年被擊中的時間重新進行計數的一個。此號碼將作爲billNum返回。

部分

(DATEADD *the offset from calendar year start to fiscal year start* billDate) 

是這裏最重要的組成部分。因爲它會將會計年度轉換爲日曆年。那麼你必須決定轉換的年份是那一年和那一年,或者那一年和那一年。例如。如果轉換年份是2015年,是否意味着2015-2016年或2014-2015財政年度。它只取決於您在DATEADD中將其轉換爲哪個方向。

相關問題