我有一个表格,其中包含一个财务期间的开始日期和结束日期。
CHARGE_PERIOD_ID START_DATE END_DATE
13 2013-03-31 00:00:00.000 2013-04-27 00:00:00.000
14 2013-04-28 00:00:00.000 2013-05-25 00:00:00.000
15 2013-05-26 00:00:00.000 2013-06-29 00:00:00.000
16 2013-06-30 00:00:00.000 2013-07-27 00:00:00.000
17 2013-07-28 00:00:00.000 2013-08-24 00:00:00.000
18 2013-08-25 00:00:00.000 2013-09-28 00:00:00.000
19 2013-09-29 00:00:00.000 2013-10-26 00:00:00.000
20 2013-10-27 00:00:00.000 2013-11-23 00:00:00.000
21 2013-11-24 00:00:00.000 2013-12-28 00:00:00.000
22 2013-12-29 00:00:00.000 2014-01-25 00:00:00.000
23 2014-01-26 00:00:00.000 2014-02-22 00:00:00.000
24 2014-02-23 00:00:00.000 2014-03-29 00:00:00.000
报告的用户希望将当前财政年度分成 12 个期间,并希望将 2 个参数输入到报告中,一个年份和一个将进入我的 sql 的期间编号。所以会收到类似@year=2014 @period=1 的东西。我必须编写一些 sql 才能访问该表并设置 2014 年 3 月 31 日的期间开始日期和 2014 年 4 月 27 日的期间结束日期。
所以在伪代码中:
查找 2014 年的期间 1 和 2014 年 3 月 31 日的返回期间开始日期和 2014 年 4 月 27 日的期间结束日期。
@PERIOD_START_DATE = 选择给定年份从 3 月开始的第一个期间。所有财务期从三月开始。
@PERIOD_END_DATE = 从表中选择相应的 END_DATE。
问题是如何开始编写这个或我的设计方法?我应该创建一个计算这个的函数,还是应该做一个 CTE 并添加一个列,该列将以他们想要的方式保存期数等。
想多了我想我需要一个映射表。所以真正的问题是我可以在没有映射表的情况下做到这一点吗?