UPDATE:
我在发布此消息后不久就发现了这一点……本质上,我曾经ROW_NUMBER
根据 TaskId TaskAssigmentId 创建了 TaskAssignments 的子分区ORDER BY
。多谢你们。
假设我构建了一个系统来跟踪具有以下架构的简单任务分配:
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)分配给多个工人(一次一个)。每次分配发生时(包括创建时间),都会在表中添加一个条目,TaskAssignments
指定任务被分配给谁以及何时分配。重新分配任务时,CurrentlyAssignedTo
字段 inTasks
将使用当前工作人员进行更新。当任务完全完成时,表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
来自TaskEndTime
table Tasks
。
关于如何很好地做到这一点的任何提示?
Disclaimer
: 我之前没有任何 SQL 经验
谢谢,努比