使用tsql进行财务计算

时间:2009-09-22 23:21:52

标签: tsql

我想根据日期查找会计月度和年度。 我怎样才能使用TSQL?

我有SQl服务器2008。

任何帮助?

此致 Manjot

3 个答案:

答案 0 :(得分:1)

您应该有一个定义会计年度的表,并根据该表构建查询。尝试在TSQL中做一些棘手的事情只会让你做恶梦。

答案 1 :(得分:1)

您存储一个天数表(每天一行),其中包含与您的组织相关的会计年度和月份的日期和列(会计月和年份从组织到组织不等)。

SQL作为一项规则在查找数据而不是计算数据方面要好得多。下个世纪的财政日历表将花费大量数据并在计算中保存周期的音调。

答案 2 :(得分: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年M来获得ISO标准日历周......