我目前有一张表,其中包含服务的费率期。需要根据提供的开始日期和结束日期以下列方式创建这些期间
- 如果开始日期不是一周的开始,则必须插入记录
从开始日期到包含开始的一周结束
日期。
- 要插入的下一条记录将是开始日期之后一周的开始,直到结束日期之前的最后一个完整日期的结束日期(如果结束日期是结束日期,则可以到结束日期为止)这一周的最后一天。
- 还需要为银行假期添加个人记录
该表目前使用递归存储过程填充,但由于超出SP',函数等的最大嵌套级别而最近失败。
我想删除此问题,我没有问题创建没有银行假期的表格,但我在处理银行假期插入和更新以前输入的费率方面遇到了问题。
例如,请参阅以下
- 开始日期:2017年1月5日
- 截止日期:2017年4月8日
- 周末:星期日
- 银行假期:3月9日和4月6日
返回的记录应为
- 1月5日 - 1月8日(第5天不是星期一)
- 1月9日 - 3月5日(银行假日前一周)
- 3月6日 - 3月8日(因银行假日而来的部分周)
- 3月9日 - 3月9日(银行假日)
- 3月10日 - 3月12日(部分周由于银行假日)
- 3月13日 - 4月2日(整周)
- 4月3日 - 4月5日(部分周由于银行假日)
- 4月6日 - 4月6日(银行假日)
- 4月7日 - 4月8日(期末)
我已经研究过使用递归CTE来做这件事,但我遇到了这个问题。
有关实施上述方法的最佳方法的任何想法吗?