我们有一张表格,用于将培训师分配给计划中的客户安装。在表中,每一位培训师都有一年中每一天的记录。(我们可以而且有时会在周末工作。)我正在构建一个搜索工具,允许我们的调度员搜索在日期 Y 和 Z 之间有 X 天可用的培训师。
Table mySchedule
Trainer Date Dirty (Bit)
------------------------------------------------
Joe 06/01/2013 0
Jessica 06/01/2013 0
Alan 06/01/2013 0
Heather 06/01/2013 0
Joe 06/02/2013 1
Jessica 06/02/2013 1
Alan 06/02/2013 0
Heather 06/02/2013 0
Joe 06/03/2013 1
Jessica 06/03/2013 1
Alan 06/03/2013 1
Heather 06/03/2013 0
这是我的表格的简化版本,涵盖了 3 天的四位培训师。如果他们安排了一些事情,Dirty = 1。如果他们可以自由安排,Dirty = 0。
我想要构建的是一个允许以下内容的查询:
定义工作需要进行的开始和结束日期。
定义需要培训师的连续天数。
返回每个匹配的培训师,以及他们在至少等于请求天数的时间段内可用的第一个日期。
纯文本示例:
客户要求培训师在 6 月的任何时候在现场待两天。查询应返回:
Alan, 06/01/2013
Heather, 06/01/2013
如果客户在 6 月将请求更改为三天,则查询将返回:
Heather, 06/01/2013
我一直在寻找几天,我发现了一些看起来很接近的东西,但最终,我无法让它们工作。在大多数情况下,失败的形式是执行时间过长。这里有一些看起来很有希望的,也许可以被比我包装更强大的 SQL-Fu 的人改编: