Sql server 财务年度更改需要对SQL Server数据库进行哪些更改?

Sql server 财务年度更改需要对SQL Server数据库进行哪些更改?,sql-server,Sql Server,我有一个使用VB.NET和SQL Server的软件。软件运行良好,但问题是如果是新的财政年度,那么新年的所有账单都应该从1开始。p> 目前,所有账单都存储在数据库表中,不确定如何实现这一点。若我将这些条目从一个临时表移动到另一个临时表,那个么计数从一个临时表开始,但依赖于该表的所有函数都显示不正确的输出 P/>有没有其他方法来管理软件,必须考虑财务年度变化?< /P> < P>一个选项是在分区上执行行编号。您的查询看起来像 SELECT billName, billAmmount, ROW_

我有一个使用VB.NET和SQL Server的软件。软件运行良好,但问题是如果是新的财政年度,那么新年的所有账单都应该从1开始。p> 目前,所有账单都存储在数据库表中,不确定如何实现这一点。若我将这些条目从一个临时表移动到另一个临时表,那个么计数从一个临时表开始,但依赖于该表的所有函数都显示不正确的输出


<> P/>有没有其他方法来管理软件,必须考虑财务年度变化?< /P> < P>一个选项是在分区上执行行编号。您的查询看起来像

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中转换它的方向。

如果您需要控制主键值,请不要使用IDENTITY之类的DB生成值。在您的应用程序业务逻辑中生成您自己的。您应该有WorkPeriods表,其中包含逻辑的有效期间。然后在所有操作表中都有WorkPerionID,SomeId作为复合主键。SomeId可以是顺序对象,当新周期开始时,您将重置它。