我一直无法找到类似这种情况的 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 的情况。当按 EnterTime 排序的行中有多个这些模式时,GroupID 必须相同,并且必须为下一组组递增。Recnum 是 PK,但不是按 EnterTime 顺序排列的。我可以在 WHILE 循环中执行此操作,但该表包含超过 3500 万条记录,因此可能需要几天的时间来处理。关于如何做到这一点的任何想法?
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