(同じテーブルの) 2 つのレコードを複数の列を持つ 1 つの行に結合したいと考えています。
雇用履歴構造は次のとおりです。
StaffID StartDate EndDate DeptID
==================================================
1 2010-10-01 2011-01-19 1
1 2011-01-20 2012-12-31 2
1 2013-01-01 2013-05-29 4
スタッフ ID が同じで、2 番目のレコードの開始日が 1 番目のレコードの終了日の 1 日後にある場合 (継続雇用)、2 つの行を 1 つの行に結合するにはどうすればよいですか?
出力は次のようになります
StaffID EffectiveDate New_DeptID Prev_DeptID
==================================================
1 2011-01-20 2 1
1 2013-01-01 4 2
以下は私のSQL文ですが、うまくいきません
select distinct
ca1.StaffID,
ca1.ProjectDepartment as Prev_DeptID, ca1.StartDate, ca1.EndDate,
ca2.ProjectDepartment as New_DeptID, ca2.StartDate, ca2.EndDate
from
emp_hist as ca1,
emp_hist as ca2
where
(ca1.StaffID = ca2.StaffID)
and ca1.StartDate<>ca2.StartDate
and ca1.EndDate <>ca2.EndDate
and ca2.startdate= DATEADD(day, 1, ca1.enddate)
たとえば、テーブル内の 2 つのレコード (真のデータ):
StaffID StartDate EndDate DeptID
===========================================================================
1 2010-04-12 12:00:00.000 2013-02-28 00:00:00.000 1
1 2013-03-01 12:00:00.000 2013-08-29 11:02:59.877 2
SQL ステートメントを使用してこのレコードを取得できません