従業員のテーブルと、その役割の履歴を示す別のテーブルがあります。履歴テーブルには、役割が開始されたときからの有効日があります。従業員の現在の役割を見つけるのは簡単ですが、特定の時点での役割を見つけるのに問題があります。
Example:
Table: Employee History
Columns: EmployeeID
Effective Date
Role
Sample Records: [ABC123, 1/4/2013, Developer]
[ABC123, 6/9/2013, Designer]
[DEF456. 8/5/2013, Manager]
Table: Event
Columns: EventID
Date
EmployeeID
Event Type
Sample Records: [1, 6/6/2013, ABC123, BOOKED_HOURS]
[2, 6/9/2013, ABC123, BOOKED_LEAVE]
[3, 8/5/2013, DEF456, SICK_LEAVE]
次に、時間の経過とともに発生した一連のイベントを示す別のテーブルがあり、イベントが発生した時点での従業員の役割を確認したいと考えています。関数ではなくプレーン SQL を使用してこれを実行できるようにしたいと考えています。
私が求めている結果セットは次のようなものです:
[6/6/2013, ABC123, Developer, BOOKED_HOURS]
[6/9/2013, ABC123, Designer, BOOKED_LEAVE]
[8/5/2013, DEF456, Manager, SICK_LEAVE]
Employee には常に役割があると考えて間違いありません。つまり、従業員は役割がなければイベントを作成できません。
私はこれについてあまりにも長い間頭を悩ませてきたので、どんな助けも大歓迎です.