このシナリオのような SQL Server の質問を見つけることができませんでした。次の形式のデータがあります。
Recnum SectionID CategoryID EnterTime LeaveTime
534 2 4 <time here> <time here>
535 2 2 <time here> <time here>
532 2 2 <time here> <time here>
523 2 4 <time here> <time here>
512 2 4 <time here> <time here>
577 2 NULL <time here> <time here>
578 1 6 <time here> <time here>
579 2 2 <time here> <time here>
571 2 2 <time here> <time here>
588 2 2 <time here> <time here>
データが次のようになるように、GroupID 列を追加する必要があります。
Recnum SectionID CategoryID EnterTime LeaveTime GroupID
534 2 4 <time here> <time here> NULL
535 2 2 <time here> <time here> 1
532 2 2 <time here> <time here> 1
523 2 4 <time here> <time here> NULL
512 2 4 <time here> <time here> NULL
577 2 NULL <time here> <time here> 2
578 1 6 <time here> <time here> NULL
579 2 2 <time here> <time here> 3
571 2 2 <time here> <time here> 3
588 2 2 <time here> <time here> 3
GroupID は、SectionID と CategoryID の両方が 2 の場合、または SectionID が 2 で CategoryID が NULL の場合に使用されます。GroupID は、EnterTime で順序付けされた行にこれらのパターンがいくつかある場合は同じである必要があり、グループの次のセットに対して増分する必要があります。Recnum は PK ですが、EnterTime 順ではありません。これは WHILE ループで実行できますが、テーブルは 3,500 万を超えるレコードであるため、処理に数日かかる可能性があります。これを行う方法について何か考えはありますか?
Example of the times for two rows:
Enter Leave
2011-05-31 21:04:07.000 2011-05-31 21:04:35.000
2011-05-31 21:04:35.000 2011-05-31 21:04:44.000