計画された顧客のインストールにトレーナーを割り当てるために使用されるテーブルがあります。テーブルには、各トレーナーの 1 年の各日に関するレコードがあります。(私たちは週末に働くことができ、時にはそうする.
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 日間で 4 人のトレーナーを対象としています。何か予定がある場合は、ダーティ = 1 です。予定が空いている場合は、ダーティ = 0 です。
私が構築したいのは、次のことを可能にするクエリです。
作業が発生する必要がある開始日と終了日を定義します。
トレーナーが必要となる連続した日数を定義します。
一致する各トレーナーを、要求された日数と少なくとも等しい期間利用できる最初の日付とともに返します。
平文の例:
顧客は、6 月のいつでも 2 日間、トレーナーがオンサイトにいることを希望しています。クエリは次を返す必要があります。
Alan, 06/01/2013
Heather, 06/01/2013
顧客が 6 月にリクエストを 3 日間に変更した場合、クエリは次のように返します。
Heather, 06/01/2013
ここ数日探していて、近いと思われるものをいくつか見つけましたが、最終的にはそれらを機能させることができませんでした. ほとんどの場合、失敗は非常に長い実行時間という形で発生します。以下に有望と思われるものをいくつか示します。おそらく、私が詰め込んでいるよりも強力な SQL-Fu を持つ人によって適応される可能性があります。