我想我需要一个SQL循环计算



好了,我正在努力弄清楚这个问题,但没有取得很大的成功。我设法将服务工作按技术人员和日完成排序。我试着计算旅行时间。从逻辑上讲,要做到这一点,我需要从作业订单=2中取出现场日期,然后从作业订单=1的明确日期中减去现场日期。然后继续完成该员工当天的剩余工作。我想每天都为每个员工这样做。工作顺序是一个密集的等级,按员工人数划分,按现场数据排序。

是基本的数据布局输入图片描述

不幸的是,我无法测试该语句,因为我现在没有安装SQL服务器。但是下面的语句应该能满足你的需求。

SELECT (NextOrder.onsite_date - PreviousOrder.clear_date) AS TravelTime
FROM dbo.employee as PreviousOrder
INNER JOIN dbo.employee as NextOrder
ON PreviousOrder.emp_no = NextOrder.emp_no
AND PreviousOrder.JobOrder + 1 = NextOrder.JobOrder
AND DATEPART(YEAR, PreviousOrder.clear_date) = DATEPART(YEAR, NextOrder.onsite_date)
AND DATEPART(MONTH, PreviousOrder.clear_date) = DATEPART(MONTH, NextOrder.onsite_date)
AND DATEPART(DAY, PreviousOrder.clear_date) = DATEPART(DAY, NextOrder.onsite_date)

也许您可以使用

更改DATEPART比较
DATEDIFF(DAY, PreviousOrder.clear_date, NextOrder.onsite_date) = 0

最新更新