私はSQL Server 2008 R2を使用しています。従業員の10001は、時間をかけて一回3回名前を変更し、DODSされていることをSQL:2番目のグループを非順次の日付に基づいて作成するにはどうすればよいですか?
ID Date Name DOD
10001 200911 Kevin H 06/17/2000
10001 200912 Kevin 06/20/2000
10001 201001 Kevin 06/20/2000
10001 201012 K 06/20/2000
10001 201101 K 06/20/2000
10001 201406 Kevin 06/20/2000
注意:私は、テーブルには、次のような構造とサンプルデータで名前を呼ばれています。私がしようとしているのは、データが日付間で一致するように、ID、名前、およびDODでグループ化することです。私はまた、これらのグループの最小および最大の日付を取得し、日付が順番になることを確認する必要があります。名前またはDODが変更され、それが以前のものに変更された場合は、新しいグループを作成する必要があります。
ので、出力は次のようになります。
EmployeeID MinDate MaxDate Name DOD
10001 200911 200911 Kevin H 06/17/2000
10001 200912 201001 Kevin 06/20/2000
10001 201012 201101 K 06/20/2000
10001 201406 201406 Kevin 06/20/2000
名称テーブルがそうであることに戻ってそこ1ヶ月後、一貫性のないデータは、20ヶ月間の一貫性がある事例、こと、およびなりますかなり大きいです20ヶ月間一貫していた。
ありがとうございました。追加情報が必要な場合はお知らせください。サブクエリを実行し、これがどのように機能するかを確認するには
select employeeid, min(date) as mindate, max(date) as maxdate,
name, dod
from (select t.*,
row_number() over (partition by employeeid order by date) as seqnum_d,
row_number() over (partition by employeeid, name, dod order by date) as seqnum_dnd
from t
) t
group by employeeid, (seqnum_d - seqnum_dnd);
: