【发布时间】:2013-08-16 22:20:50
【问题描述】:
EquipmentUseId CollectionPointId EmployeeNum ShopOrder StartDateTime
366 69 9999 999999 4/26/13 3:29 PM
373 69 4878 107321 4/26/13 10:19 PM
385 69 4971 107321 4/27/13 7:35 AM
393 69 4179 107325 4/30/13 7:24 AM
394 69 4179 107325 4/30/13 7:38 AM
395 69 4179 107325 4/30/13 10:28 AM
398 69 4179 107325 4/30/13 2:41 PM
399 69 9999 999999 4/30/13 2:43 PM
400 69 9999 999999 4/30/13 2:46 PM
鉴于上表,我遇到了一个独特的问题,描述它可能同样困难。每个员工的每个 ShopOrder 都有一个 StartDateTime,但没有 StopDateTime,这是设计使然。但是,我需要能够计算一个 ShopOrder 的 StartDateTime 和下一个 ShopOrder 的 StartDateTime 之间的时间差。一个示例:SO # 999999 于 4 月 26 日 15:29 由员工 9999 开始,然后新的 SO # 107321 由员工 4878 于 4 月 26 日 22:19 开始。我需要计算 4/ 26/2013 22:19 和 4/26/2013 15:29。这将为我提供 SO# 9999 的下班日期,但实际上需要辅助流程。现在我只需要能够得到时间。一个问题是如果 SO # 相同,那么我将只使用第一个 StartDateTime 和下一个 SO # 的第一个 StartDateTime。抱歉,这么长,我什至不确定我是否已经解释了什么。
请对我放轻松...这是漫长的一天。
编辑于 2013 年 8 月 19 日输出:
在周末仔细考虑之后,我认为这是最好的 使用 EndDateTime,因为此查询只是 整体申请/报告。
此外,EmployeeNum 与应用程序的这一部分不再相关。
它应该是这样的(EquipmentUseID 是 PK, CollectionPointID 始终为 69,因此它们不需要显示在 输出)?
ShopOrder StartDateTime EndDateTime 999999 4/26/13 3:29 PM 4/26/13 10:19 PM 107321 4/26/13 10:19 PM 4/30/13 7:24 AM 107325 4/30/13 7:24 AM 4/30/13 2:43 PM 999999 4/30/13 2:43 PM <next SO# StartDateTime>总结这个表,我需要 SO#,StartDateTime per SO#(已经在表中), 和 EndDateTime 这实际上是下一个 SO# 的 StartDateTime。希望这可以清除 搞定了,抱歉给您造成困扰。
【问题讨论】:
-
使用内联视图,首先获取每个车间订单的最大日期,然后查找 LAG 函数并遍历那些进行时间差异的函数
-
@randy SQL 2005 没有滞后
-
@ctmcklowe96 你能为给定的输入提供所需的输出吗?
-
@RomanPekar - 输出和更多解释以粗体的“已编辑输出...”开头。
标签: sql tsql sql-server-2005 datediff