最大嵌套级别SQL Server - 创建日历类型表

时间:2017-02-27 11:59:12

标签: sql sql-server recursion common-table-expression

我目前有一张表,其中包含服务的费率期。需要根据提供的开始日期和结束日期以下列方式创建这些期间

  • 如果开始日期不是一周的开始,则必须插入记录 从开始日期到包含开始的一周结束 日期。
  • 要插入的下一条记录将是开始日期之后一周的开始,直到结束日期之前的最后一个完整日期的结束日期(如果结束日期是结束日期,则可以到结束日期为止)这一周的最后一天。
  • 还需要为银行假期添加个人记录

该表目前使用递归存储过程填充,但由于超出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来做这件事,但我遇到了这个问题。 有关实施上述方法的最佳方法的任何想法吗?

0 个答案:

没有答案