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