SQL Server 2008 R2 を使用しています。次の構造とサンプルデータを持つ EmployeeHistory というテーブルがあります。
EmployeeID Date DepartmentID SupervisorID
10001 20130101 001 10009
10001 20130909 001 10019
10001 20131201 002 10018
10001 20140501 002 10017
10001 20141001 001 10015
10001 20141201 001 10014
従業員 10001 は、時間の経過とともに 2 つの部門と複数の監督者を変更していることに注意してください。私がやろうとしているのは、この従業員の雇用の開始日と終了日を、日付フィールドで並べられた各部門でリストすることです。したがって、出力は次のようになります。
EmployeeID DateStart DateEnd DepartmentID
10001 20130101 20131201 001
10001 20131201 20141001 002
10001 20141001 NULL 001
次のクエリを使用してデータをパーティション分割するつもりでしたが、失敗しました。Department は 001 から 002 に変更され、次に 001 に戻ります。明らかに、DepartmentID でパーティション分割することはできません...明らかに見落としていると思います。何か助けはありますか?前もって感謝します。
SELECT * ,ROW_NUMBER() OVER (PARTITION BY EmployeeID, DepartmentID
ORDER BY [Date]) RN FROM EmployeeHistory