Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用tsql的财务计算_Tsql - Fatal编程技术网

使用tsql的财务计算

使用tsql的财务计算,tsql,Tsql,我想根据日期查找会计月份和会计年度。 我如何使用TSQL实现它 我有SQl server 2008 有什么帮助吗 问候 Manjot您应该有一个定义您的会计年度的表,并基于该表生成查询。试图在TSQL中做一些棘手的事情只会让你做噩梦。你存储了一个天数表(每天一行),其中包含与你的组织相关的财政年度和月份的日期和列(财政年度和月份因组织而异) 通常,SQL在查找数据方面比计算数据要好得多。下个世纪的财政日历表只需要少量的数据,并在计算中保存周期的音调。我对一些SSRS报告也有同样的问题,作为一所大

我想根据日期查找会计月份和会计年度。 我如何使用TSQL实现它

我有SQl server 2008

有什么帮助吗

问候
Manjot

您应该有一个定义您的会计年度的表,并基于该表生成查询。试图在TSQL中做一些棘手的事情只会让你做噩梦。

你存储了一个天数表(每天一行),其中包含与你的组织相关的财政年度和月份的日期和列(财政年度和月份因组织而异)


通常,SQL在查找数据方面比计算数据要好得多。下个世纪的财政日历表只需要少量的数据,并在计算中保存周期的音调。

我对一些SSRS报告也有同样的问题,作为一所大学,我们有一个8月的财政年度,因此我创建了一个查询,该查询将获取该周的开始日期,并确定它是哪一年。在本例中,我使用了Getdate()

选择
(案例
当DatePart(MM,(cast(floor(cast(DATEADD(dd,((DatePart(dw,GetDate()))-1)*-1,GetDate())作为float))作为datetime)时)小于8
然后是DATEPART(年份,GetDate())
ELSE DATEPART(年份,GetDate())+1
(完)作为财政年度,,
(案例
当DATEPART(wk,GetDate())-DATEPART(wk,CAST(CAST(DATEPART(yy,GetDate())作为Char)+'-08-01'作为Datetime))大于0时
然后是DATEPART(wk,GetDate())-DATEPART(wk,CAST(CAST(DATEPART(yy,GetDate())作为Char)+'-08-01'作为Datetime))
ELSE DATEPART(wk,GetDate())-DATEPART(wk,CAST(CAST(DATEPART(yy,GetDate())作为Char)+'-08-01'作为Datetime))+52
(完)周末

它完成了这项工作,但仍然有一个缺点,即只能在一周的开始日期工作,因此,如果有几周主要在下一个财政年度,它将不会对此进行调整。请注意,您已经说过,获得ISO标准日历周需要15年的时间…

您的财政年度何时开始?我认为这不是内置的,所以您必须计算它。因为我不知道“财政月”或“财政年度”是什么,你必须定义它。我的财政月从4月1日开始。不确定今年是什么时候。我想找到财政月和财政季度。你看到人们也在记录财政年度吗?我只是想把它录下来,但这不是必要的一天(如果我不能计算它:-)。你有什么建议吗?谢谢你。但如果我有一个日期,我怎么能找到财政季度或月份?四季度加1,一个月加3?年度呢?你有季度、月份和你感兴趣的任何其他会计期间的栏目,一直到周(零售通常有特殊的周)。您从不添加或删除任何内容,只需查找日期并查看它所属的会计年度、月份和季度。
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