UPDATE:
发布后,我很快就想到了......基本上,我使用ROW_NUMBER
根据TaskId ORDER BY
TaskAssigmentId`创建了TaskAssignments的子分区。多谢你们。访问表的下一个/上一个行的T-SQL
假设我建立一个系统来跟踪简单的任务分配与下面的模式:
Tasks:
TaskId CurrentlyAssignedTo TaskAddedTime TaskEndTime
A FooBar 2013-05-03 23:28:32.060 2013-05-07 10:12:32.060
B Bob 2013-05-03 20:12:32.060 NULL
TaskAssignments:
TaskAssignmentId TaskId AssignedTo StartTime
1 A Foo 2013-05-03 23:28:32.060
2 A Bar 2013-05-04 20:12:32.060
3 A FooBar 2013-05-05 10:12:32.060
4 B Alice 2013-05-03 20:12:32.060
5 B Bob 2013-05-06 10:12:32.060
表Tasks
包含任务的当前信息。一个特定的任务(A或B)可以分配给多个工作人员(一次一个)。每次发生任务(包括创建时间)时,都会向表表中添加一个条目,以指定任务分配给谁以及在什么时间。当任务被重新分配时,Tasks
中的CurrentlyAssignedTo
字段被当前工作者更新。当任务完全完成时,TaskEndTime
字段在Tasks
表中更新。 TaskAssignmentId
是一个增量索引。
就这样,我想建立一个查询/视图输出是这样的:
VwTaskBreakDown:
TaskId AssignedTo StartTime EndTime
A Foo 2013-05-03 23:28:32.060 2013-05-04 20:12:32.060
A Bar 2013-05-04 20:12:32.060 2013-05-05 10:12:32.060
A FooBar 2013-05-05 10:12:32.060 2013-05-07 10:12:32.060
B Alice 2013-05-03 20:12:32.060 2013-05-06 10:12:32.060
B Bob 2013-05-06 10:12:32.060 NULL
就某一特定任务,分配的EndTime
是下一个任务的StartTime
。如果没有下一个任务,EndTime
来自Tasks
的TaskEndTime
。
任何暗示这可以做得很好吗?
Disclaimer
:我没有任何以前的经验与SQL
感谢, Noobie