【发布时间】:2020-10-14 06:45:58
【问题描述】:
我有一张表,我们在其中存储任务的StartTime 和StopTime。一项任务可以分配给多个技术人员。一项任务可以有多个开始时间、停止时间(所以多行,这里 Doc Num 是主 ID)。
我想根据任务 ID 和技术人员 ID 计算开始时间和停止时间之间的差异总和。
我还需要获取最后一行的状态来确定每个技术员的当前任务状态。我尝试了以下查询。但它没有用。
SELECT T1.TaskId, SUM(DATEDIFF(second, T1.StartTime,T1.StopTime)) as TaskDuration
, T3.TechnicianId, T3.FinalStatus
FROM Tbl_TaskTracking T1
INNER JOIN (
SELECT DISTINCT T2.TaskId, T2.technicianId
, first_Value(T2.Status) OVER (PARTITION BY T2.TASKID, T2.technicianId ORDER BY T2.TASKID, T2.technicianId, T2.docnum desc) AS FinalStatus
FROM Tbl_TaskTracking T2
) AS T3 ON T1.TaskId = T3.TaskId
WHERE T1.TaskId = '2001628'
GROUP BY T1.TaskId, T3.TechnicianId, T3.FinalStatus
我的表格数据如下所示。此行显示特定任务 ID 的数据。
【问题讨论】:
标签: sql sql-server tsql window-functions