首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算同一用户两个不同行之间的时间差?

如何计算同一用户两个不同行之间的时间差?
EN

Stack Overflow用户
提问于 2019-07-19 14:11:42
回答 1查看 79关注 0票数 0

每个员工在进出房间时通常都有进出时间,有时会被搞砸,因为人们忘记了刷卡和尾随另一名员工。我想计算一下在房间里花的时间。

报告显示:

  1. 门时间user1
  2. user1室外时间
  3. 门时间user2
  4. user2室外时间
  5. 等。
代码语言:javascript
复制
SELECT 
    u.userid 
    ,u.[FirstName] + ' ' + u.[LastName] AS EmployeeName
    ,et.name AS [Description]
    ,MAX(e.LoggedTime) AS SwipeTime
    ,d.name AS door
FROM [Users] AS u
LEFT JOIN [Events] AS e ON e.RecordIndex1=u.UserID
LEFT JOIN [EventTypes] AS et on e.EventTypeID = et.EventTypeID
join [Doors] AS d ON e.RecordIndex2 = d.DoorID
WHERE LoggedTime > CONVERT(DATE, GETDATE())  and d.doorid in ( 32, 50, 42, 51, 33) 
GROUP BY 
    u.userid,u.[FirstName] + ' ' + u.[LastName]
    ,et.name
    ,d.name
ORDER BY 
    u.[FirstName] + ' ' + u.[LastName]
    ,MAX(e.LoggedTime)

我希望这份报告表明:

  1. 门时间user1
  2. user1室外时间
  3. 门时间user2
  4. user2室外时间

在时间列后面添加一列,并计算用户进出时间之间的时间差。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-19 14:39:15

通常,对于行之间的操作,延迟函数是goto解决方案。

延迟(Transact-SQL)

代码语言:javascript
复制
LAG (scalar_expression [,offset] [,default])  
    OVER ( [ partition_by_clause ] order_by_clause )  

您可以使用它来引用前面(或后面使用铅)行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57114301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档